例137 9.一个数如果恰好等于它的因子之和,这个数就称为“完数”。
例如 6=1+2+3,编程找出 1000 以内的所有完数。
一:C语言实现
#include<stdio.h>
int main() {
int a, b, sum;//a为1000之中的数,b为a的因子,sum为因子之和
for (a = 1; a <= 1000; a++) {
sum = 0;
for (b = 1; b < a; b++) {
if (a % b == 0) {
sum += b;
}
}
if (sum == a) {
printf("%d its factors are ", a);
for (b = 1; b < a; b++) {
if (a % b == 0) {
printf("%d,", b);
}
}
printf("\n");
}
}
return 0;
}
输出结果:
二:Java实现
public class PerfectNumbers {
public static void main(String[] args) {
for (int i = 2; i <= 1000; i++) {
if (isPerfectNumber(i)) {
System.out.println(i + " is a perfect number.");
}
}
}
public static boolean isPerfectNumber(int num) {
int sum = 1;
for (int i = 2; i <= num / 2; i++) {
if (num % i == 0) {
sum += i;
}
}
return sum == num;
}
}
运行结果: