完全数就是 它本身所有的真因子之和等于它本身的数。例如6=1+2+3。
话不多说,直接上代码。
下列代码主要是使用了数组来储存因子,所以略显杂乱;
#include<stdio.h>
int a,b,c,i;
int m[100][100];
bool judge(int k){
int j;
int s=0;
c=a;
for(j=1;j<=k/2;j++)
{
if((k%j)==0)
{
s+=j;
}
}
if(s==k){
for(j=1;j<=k/2;j++)
{
if((k%j)==0)
{m[b][a]=j;
a++;
}
}
b++;
return 1;
}
else
{return 0;
}
}
int main()
{ a=b=0;
for(i=1;i<=10000;i++)
{
if(judge(i))
{printf("%-4d是完全数,因子有",i);
for(;c<a;c++)
{
printf("%d ",m[b-1][c]);
}
printf("\n");
}
}
return 0;
}
下列这是核心代码
bool judge(int k){
int j;
int s=0;
c=a;
for(j=1;j<=k/2;j++)
{
if((k%j)==0)
{
s+=j;
}
}
if(s==k){
return 1;
}
else
{return 0;
}
}
希望对大家有所帮助。