JAVA练习

1.鬼谷猜想:

鬼谷猜想”:对任意自然数,若是奇数,就对它乘以 3 再加 1;若是偶数,就对它除以 2,这样得到一个新数,再按上述计算规则进行计算,一直进行下去,最终必然得到 1。

import java.util.Scanner;
public class Test {
    public static void gg() {
        Scanner s = new Scanner(System.in);
        System.out.println("请输入一个自然数");
        int gg=s.nextInt();
        while(gg!=1) {
            if(gg%2==0) {
                gg=gg/2;
            }else {
                gg=gg*3+1;
            }
        }
        System.out.println(gg);
        s.close();
    }
    public static void main(String[] args) {
        gg();
    }

}

2.求完全数:

编程求 1~10000 之间的所有“完全数”,完全数是该数的所有因子之和等于该数的数。例如,6 的因子有 1、2、3,且 6=1+2+3,所以 6 是完全数。

完全数分解公式:如果p是质数,且2^p-1也是质数,那么(2^p-1)*2^(p-1)便是一个完全数。

public class Test {
    public static void cn() {
        for(int i =2;i<=1000;i++){
            int p = 0;
            for(int j = 2;j<i;j++){
                if(i%j==0){
                    p=1;
                }
            }
            if(p==0){
                for(int c=1;c<=10000;c++) {
                    double a = Math.pow(2, i)-1;
                    double b = Math.pow(2, i-1);
                    if(c==a*b) {
                        System.out.println("完全数:"+c);
                    }
                }
            }
        }
    }
    public static void main(String[] args) {
        cn();
    }

}

3.整除

一个整数的各位数字之和能被 9 整除,则该数也能被 9 整除。编程验证给定的整数能否被 9 整除。

import java.util.Scanner;
public class Test {
    public static void nine() {
        Scanner s = new Scanner(System.in);
        System.out.println("请输入一个整数:");
        int i = s.nextInt();
        String st = Integer.toString(i);    
        int sum =0;
        for(int j=0;j<=st.length()-1;j++) {
            //截取每一位数字的字符串并转成数字进行相加
            int it = Integer.parseInt(st.substring(j, j+1));
            sum+=it;
        }
        if(sum%9==0) {
            System.out.println("该数可以被9整除");
        
        }else {
            System.out.println("该数不可以被9整除");
        }
        s.close();
    }
    public static void main(String[] args) {
        nine();
    }

}    

4.质因数分解

将一个正整数分解质因数。例如:输入 90,打印出 90=2*3*3*5。

import java.util.ArrayList;
import java.util.Scanner;
public class Test {
    public static void fj() {
        Scanner s = new Scanner(System.in);
        System.out.println("请输入一个正整数:");
        int in = s.nextInt();
        ArrayList<Integer> a = new ArrayList<Integer>();
        StringBuilder sb = new StringBuilder();
        for(int i =2;i<=1000;i++){
            int p = 0;
            for(int j = 2;j<i;j++){
                if(i%j==0){
                    p=1;
                }
            }
            if(p==0){
                a.add(i);//将1000以内的质数加入List
            }
        }
        int d = in;
        for(int j=0;j<a.size();j++) {
            while(d%a.get(j)==0) {//除List内的数,直到不能整除
                d=d/a.get(j);//除完赋值,做下一次的分子
                String st = Integer.toString(a.get(j))+"*";
                //把符合条件的质数加入StringBuilder
                sb.append(st);
            }
        }
        System.out.println(in+"="+sb.substring(0, sb.length()-1));//截取一下,因为最后一个数多了个*
        s.close();
    }
    public static void main(String[] args) {
        fj();
    }

}    
posted @ 2018-04-05 15:00  0==1&1==0  阅读(433)  评论(0编辑  收藏  举报