输出10000以内的完全数,并输出每个完数的真因子。完数及各真因子之间用空格隔开,一个完数一行 java代码怎么写
时间: 2024-09-15 13:13:58 浏览: 104
在Java中,我们可以编写一段代码来找出10000以内的完全数,并输出每个完全数及其真因子。完全数是指它的所有真因子(除了本身外)加起来等于它本身的正整数。下面是一个简单的示例:
```java
public class PerfectNumbers {
public static void main(String[] args) {
int limit = 10000;
for (int i = 1; i < limit; i++) {
if (isPerfectNumber(i)) {
printPerfectNumberAndFactors(i);
}
}
}
// 检查是否是完全数
public static boolean isPerfectNumber(int num) {
long sum = 1;
for (int factor = 2; factor * factor <= num; factor++) {
if (num % factor == 0) {
sum += factor;
if (factor != num / factor) { // 如果还有另一个因子,累加
sum += num / factor;
}
}
}
return sum == num && num > 1; // 返回如果sum等于num,则它是完全数
}
// 打印完全数及其真因子
public static void printPerfectNumberAndFactors(int perfectNum) {
System.out.print(perfectNum + " 的真因子有: ");
for (int factor : getFactors(perfectNum)) {
System.out.print(factor + " ");
}
System.out.println();
}
// 获取一个数的所有因子
public static int[] getFactors(int num) {
int[] factors = new int[num];
for (int i = 1; i * i <= num; i++) {
if (num % i == 0) {
factors[0] = i;
if (i != num / i) {
factors[1] = num / i;
}
}
}
return factors;
}
}
```
这个程序首先遍历从1到10000之间的每个数字,检查每个数是否是完全数。如果是,就打印出该数及其真因子。
阅读全文