完数,即完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。其所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于本身。
专注于为中小企业提供成都网站设计、成都网站制作服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业土默特左旗免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
根据该定义 可以得出判断完数的函数如下:
#include stdio.h
int is_perfect_number(int n)
{
int i,s=0;
for(i = 1; i =n/2; i ++)
if(n%i == 0) s+= i;//统计所有真因子的和。
if(s == n) return 1;//如果与原值相等,则该数为完数。
return 0;//不是完数。
}
根据该函数,只需要对需要打印的范围内2 ~2000做遍历,并逐一调用该函数判断,如果返回1则打印即可。
完整代码如下:
#include stdio.h
int is_perfect_number(int n)
{
int i,s=0;
for(i = 1; i =n/2; i ++)
if(n%i == 0) s+= i;//统计所有真因子的和。
if(s == n) return 1;//如果与原值相等,则该数为完数。
return 0;//不是完数。
}
int main()
{
int n;
for(n = 3; n 2000; n++)
if(is_perfect_number(n)) printf("%d,",n);
}
#includestdio.h
int main()
{
int i,n,sum;
int a,b;
scanf("%d%d",a,b);
for(n=a;n=b;n++)
{
sum=0;
for(i=1;in;i++)
{
if(n%i==0)
{sum=sum+i;}
}
if(sum==n)
{printf("%4d",n);}
}
return 0;
}
#include stdio.h
#includemath.h
int w(int x)
{
int i,sum=1;
for(i=2;i=sqrt(x);i++)
{
if(x%i==0)
{
sum+=i+x/i;
}
}
if(sum==xx!=1)
{
return 1;
}
else
{
return 0;
}
}
int main()
{
int i,n,m,a[10],j;
scanf("%d%d",n,m);
for(i=n,j=0;i=m;i++)
{
if(w(i))
{
a[j++]=i;
}
}
if(j==0)
{
printf("NIL\n");
}
else
{
for(i=0;ij;i++)
{
if(ij-1)
{
printf("%d ",a[i]);
}
else
{
printf("%d",a[i]);
}
}
}
return 0;
}
void Solve(int num)
{
int sum = 0;
int i = 0;
if (num == 0)
{
printf("No\n");
}
else if (num == 1)
{
printf("Yes, its factors are %d\n", num);
}
else
{
for (i = 1; i num; i++)
{
if (num % i == 0)
{
sum += i;
}
}
if (sum == num)
{
printf("Yes, its factors are ");
for (i = 1; i num; i++)
{
if (num % i == 0)
{
printf("%d ", i);
}
}
printf("\n");
}
else
{
printf("No\n");
}
}
}
int main() //链表建立测试
{
int n;
while(scanf("%d", n) != EOF)
{
Solve(n);
fflush(stdin); //防止输入字母造成死循环
}
return 0;
}
1、解题思路:所谓完数是一些特殊的自然数。如果一个数恰好等于它的因子之和,则称该数为“完全数”。先定义一个函数用于判断一个数是否是完数,接着依次从2到5000依次循环判断。
2、参考代码:
#include stdio.h
int fun(int n){//判断n是否是完数
int i,sum=0;
for(i=1;in;i++)
if(n%i==0) sum+=i;
if(sum==i) return 1;
return 0;
}
int main ()
{
int i;
for(i=2;i5000;i++)
if(fun(i))
printf("%d ",i);
return 0;
}
3、运行结果:6 28 496
#includestdio.h
void main()
{
int i,t(0),m;
printf("请输入一个数:");
scnaf("%d",m);
for(i=1;im;i++)
{
if(m%i==0)
t=t+i;
}
if (t==m)
printf("该数是完数");
else
printf("该数不是完数");
}
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款