题目:一个数如恰好等于它的因子之和,这个数就称为“完数”。编程序找出 1000 以内的所有完数,并输出其因子(6 是一个"完数",它的因子是 1,2,3)。
解释:完数: 是指一个正整数等于除了它本身以外所有正因子之和的数。
换句话说,一个数如果恰好等于它的因子之和(除了它本身之外),则称该数为“完数”。
例如:
数字6是一个完数,因为6的因子有1、2和3,它们的和是1 + 2 + 3 = 6,恰好等于6本身。
另一个完数的例子是28,它的因子有1、2、4、7和14,它们的和是1 + 2 + 4 + 7 + 14 = 28,也恰好等于28本身。
已知最小的几个完数是:6、28、496、8128、……
代码:
#include <stdio.h>
// 判断n是否为完数
int ws(int n)
{
int sum = 0;
int i;
for ( i = 1; i < n; i++)
{
if (n % i == 0)
{
sum += i;
}
}
return sum == n;
}
// 找出n的所有因子
int yz(int n)
{
int i;
printf("%d的因子有: ", n);
for ( i = 1; i < n; i++)
{
if (n % i == 0)
{
printf("%d ", i);
}
}
printf("\n");
}
void main()
{
int num;
printf("1000以内的完数有:\n");
for ( num = 1; num <= 1000; num++)
{
if (ws(num))
{
yz(num);
}
}
}
/*
return sum==n 用
if( sum == n)
return 1;
else
return 0;
替换也行
*/