java,如果一个数恰好等于它的因子之和,则称这个数为完数,比如6=1+2+3,则6就是完数。编写应用程序求5000之内的所有完数
时间: 2024-10-10 18:17:36 浏览: 40
Java 完数 Mooc
5星 · 资源好评率100%
在Java中,可以编写一个程序来查找并打印出5000以内所有的完数。完数是指其所有真因数(除了自身以外的因子)相加等于该数本身的自然数。以下是一个简单的解决方案:
```java
public class Main {
public static void main(String[] args) {
int limit = 5000;
for (int i = 1; i <= limit; i++) {
if (isPerfectNumber(i)) {
System.out.println(i + " 是一个完数(因子之和等于它本身)");
}
}
}
// 检查一个数是否是完数
public static boolean isPerfectNumber(int num) {
long sum = 1;
for (int i = 2; i * i <= num; i++) { // 只需检查到 sqrt(n),因为大于sqrt(n)的因子都会有一个对应的另一个因子小于sqrt(n)
if (num % i == 0) {
sum += i; // 因子是num/i
if (i != num / i) { // 如果i不是num的平方根,再添加另一个因子
sum += num / i;
}
}
}
return sum == num && num > 1; // 返回num是否等于其因子之和且num大于1(排除1作为特殊情况)
}
}
```
运行此程序,你会看到5000以内的所有完数。
阅读全文