2017年最新av番号封面:多谢 盈数与完数

来源:百度文库 编辑:高校问答 时间:2024/05/05 15:46:17
题目:
盈数与完数
说明:
一个数如果恰好等于它的各个因子(该数本身除外)之和,则称其为"完数";
如果因子之和大于该数,则称其为"盈数".求出2到60之间所有的"完数"和"盈数".
举例:
6 = 1*2*3,1,2,3是6的因子,并且3个因子满足6 = 3+2+1,所以6就是完数.
提示:完数因子必须为质数.

#include<stdio.h>
void main()
{
int a[11]={1,2,3,5,7,11,13,17,19,23,29};
int b[10] ;

int d, i, j, k, t, g, temp ;

for( j=2; j<=60; j++ )
{
b[0] = 1;
for(g=1;g<10;g++)
b[g] = 0;

i = 1;
k = 1;
temp = j;

while( i<11 )
{
if( temp%a[i] == 0 )
{
if( (temp == a[i])&&(temp != j) )
{
b[k++] = a[i];
break;
}
temp = temp/a[i];
if(temp != 1)
b[k++] = a[i];
}
else
i++;
}

if(b[1] == 0)
continue;

d = 0;
t = 0;
while(b[d]!=0)
{
t = t + b[d];
d = d + 1;
}

if(t == j)
printf("%d是完数\n",t);
if(t > j)
printf("%d是盈数\n",j);
}

时间紧,怎么求2到30内的质素再找别人吧!编译通过,且求出答案,分别是6,4。