完数:n=因子和
例:6的因子有1,2,3
6=1+2+3,6就是完数
8的因子有1,2,4
但是8≠1+2+4,所以8不是完数。
编程分析:
①先找出所有因子;n%i==0就是因子
②把所有因子加进去;s=s+i
③判断和是否和这个总数n是不是相等;
④相等就是完数,不相等就不是完数。
注意:
1是任何一个数的因子,从1开始
任何一个数的最大因子是n/2,到n/2结束
然后判断因子之和是否等于整数n就行了。
是就返回1,不是就返回0。
参考代码:
int wan(int n) {
int i, s = 0;
for (i = 1; i <= n / 2; i++)
if (n % i == 0)
s += i;
if (s == n)
return 1;
else
return 0;
}
int main()
{
int x;
scanf("%d", &x);
if (wan(x))
printf("%d是完数", x);
else
printf("%d不是完数", x);
}