10000以内完全数与判断是否为完全数java编译

本文为博主原创,接受意见,不喜勿喷!

10000以内完全数与判断是否为完全数java编译

1. 完全数(Perfect number)定义

又称完美数或完备数,是一些特殊的自然数。
它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。

例:6=1+2+3。1、2、3都是6的因子。 28=1+2+4+7+14。

例1:求10000以内的完全数的个数。

思路分析:

1.第一层循环是遍历10000以内的所有数;
2.第二层循环遍历10000以内的数的所有因子,判断条件为小于等于i/2是因为每个整数的最大因子不超过它的一半
3.如果i能被j整除,才去获取它的因子,然后每获取到一个因子就把它累加到count中;
4.然后判断当前数的所有因子的和与当前数是否相等,如果相等,打印输出。
代码如下:

import java.util.Scanner;
public class WanShu {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		while(in.hasNext()){
			int N = in.nextInt();
			int count = 0;
			for(int i=1;i<=N;i++){
				int sum=0;
				for(int j=1;j<i;j++){
					if(i%j==0)
						sum+=j;
				}
				if(sum==i)
					count++;
			}
			System.out.println(count);
		}
	}
}

结果:
结果

例2 判断是否完全数

从键盘输入一个整数,判断该数是否是完全数,如果是完全数,则输出yes,否则,输出no。完全数是指其所有因数(包括1但不包括其自身)的和等于该数自身的数。例如:28=1+2+4+7+14就是一个完全数。

输入样例:
在这里给出一组输入。例如:
28
输出样例:
在这里给出相应的输出。例如:
yes

思路分析:

1.Scanner in = new Scanner(System.in); int N = in.nextInt();
第一层循环遍历N以内的数的所有因子,判断条件为小于等于i/2是因为每个整数的最大因子不超过它的一半
2.如果i能被j整除,才去获取它的因子,然后每获取到一个因子就把它累加到sum中;
3.然后判断当前数的所有因子的和与当前数是否相等,如果相等,打印输出yes,不相等,打印输出no。
代码如下:

import java.util.Scanner;
public class WanShu2 {
	public static void main(String[] args) {
		int sum=0;
		Scanner in = new Scanner(System.in);
			int N = in.nextInt();
			for(int i=1;i<=N/2;i++){
				if(N%i==0)
					sum=sum+i;}
				if(sum == N )
					System.out.println("yes");
				else
					System.out.println("no");
		
	}
}

例2
3
本代码比较简陋,大家还可以在此基础上进行优化

猜你喜欢

转载自blog.csdn.net/weixin_43762934/article/details/84667286