讨论/算法和数据结构/一个数如果恰好等于它的因子之和,这个数就是完数,例如 6 = 1 + 2 + 3,编程 找出1000内所有的完数。/
一个数如果恰好等于它的因子之和,这个数就是完数,例如 6 = 1 + 2 + 3,编程 找出1000内所有的完数。

//7、一个数如果恰好等于它的因子之和,这个数就是完数,例如 6 = 1 + 2 + 3,编程
//找出1000内所有的完数。

public class Exe05 {
public static void main(String[] args) {
boolean zhishu = true;
boolean wanshu = true;
int sum = 0;
for (int x = 1; x < 1000; x++) {
for (int i = 1; i < Math.sqrt(x); i++) {
if (x % i == 0) {
zhishu = false;
} else if (x % i != 0) {
zhishu = true;}
}
if (zhishu = true) {
wanshu = false;
}
if(zhishu=false) {
for(int j=1;j<x;j++) {
if(x%j==0) {
sum+=j;
}

		}
			if(sum==x) 
			{
				wanshu=true;
			}
			else {
				wanshu=false;
			}
		}
          if(wanshu==true) {
			System.out.println(x+"是完数");				
		}
	}
	
			
		}
	}

//程序运行出来没有结果,有没有大佬能帮我看看哪里错了,怎么改才好。

展开讨论
Sdream发起于 2020-05-15
最近编辑于 2020-05-15

不过写这个判断确实有点多次一举。
直接判除以因数就行了。


//7、一个数如果恰好等于它的因子之和,这个数就是完数,例如 6 = 1 + 2 + 3,编程
//找出1000内所有的完数。

public class Exe05 {
	public static void main(String[] args) {
		int sum = 0;
		for (int x = 1; x <= 1000; x++) {
			sum = 0;
			for (int i = 1; i < x; i++) {
				if(x%i==0) {
                 sum+=i;
				}
				
			}
				if(sum==x) 
				{
				System.out.println(x+"是完数");				
			}
				}
			}
             
		
				
			}



展开全部 2 讨论