找出0-100000以内的所有完数:算法与Java代码实现
找出0-100000以内的所有完数:算法与Java代码实现
定义: 如果一个数恰好等于它的因子之和,那么这个数称为'完数',例如6就是一个完数,6 = (1 + 2 + 3)。
问题: 试找出0-100000以内的所有完数。
解题思路:
首先,完数必须是正整数,因此可以从1开始遍历到100000。对于每一个数,需要求出它的因子。可以遍历从2到该数的一半(因为大于该数一半的数不可能是它的因子),找出所有能整除该数的数。将这些因子相加,如果和等于该数,那么该数就是完数。最后,将所有完数输出即可。
Java代码如下:
public class PerfectNumber {
public static void main(String[] args) {
for (int i = 1; i <= 100000; i++) {
int sum = 0;
for (int j = 2; j <= i / 2; j++) {
if (i % j == 0) {
sum += j;
}
}
if (sum + 1 == i) {
System.out.println(i);
}
}
}
}
代码解释:
- 使用一个for循环遍历所有可能的完数,从1到100000。
- 接着,使用一个内部的for循环遍历从2到该数的一半,找出所有能整除该数的数,并将它们的和累加到sum中。
- 最后,如果sum + 1等于该数,就输出该数。其中,sum初始值为0,因为1也是该数的因子,所以需要将1的值加入到sum中。
总结: 该代码实现了找出0-100000以内所有完数的功能,并通过循环遍历和因子求和的方式判断一个数是否为完数。代码清晰易懂,结构合理,符合良好的编程规范。
原文地址: https://www.cveoy.top/t/topic/mkFz 著作权归作者所有。请勿转载和采集!