[蓝蓝计算机考研算法训练二期]-day01

125 阅读1分钟

1、从键盘输入一个整数,判断该数是否为素数

什么是素数

素数(质数)是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。

思路

将输入的整数记为num,从2开始遍历到num-1,看能否被num整除,如果能就不是素数,否则就是素数。

具体实现

public static void main(String[] args) {
    System.out.println("输入一个整数:");
    Scanner scan=new Scanner(System.in);
    int num=scan.nextInt();
    int i=0;
        for (i=2;i<num;i++){
            if(num%i==0){
                System.out.println("该数不是素数。");
                break;
            }
        }
        if(i==num){
            System.out.println("该数是素数。");
        }
}

2、求解从2到20000的所有完数。所有的真因数的和等于本身的数字称为完数

思路

第一层i从2遍历到20000,并且设置因数和sum为1,第二层j从2遍历到i,如果i可以整除j,则sun+=j,第二层循环结束后判断因数和是否和i相等,相等则输出。

集体实现

java实现

public static void main(String[] args) {
    for (int i = 2; i < 20000; i++) {
        int sum = 1;
        for (int j = 2; j < i; j++) {
            if (i % j == 0) {
                sum += j;
            }
        }
        if (sum == i) {
            System.out.println(i);
        }
    }
}