完全数,又称完美数, 是一些特殊的自然数。它所有的真因子(即除了自身以外的约数的和(即因子函数),恰好等于它本身。如果一个数恰好等于它的真因子之和,则称该数为“完全数”。第一个完全数是6,6=1 2 3=1+2+3.
/*完数,即完美数,一个数如果恰好等于除它本身外的因子之和,这个数就称为完数。例如6=1+2+3.(6的因子是1,2,3)*/#include<stdio.h>
void main()
{
int i,j,k,h,s,sum
int a[200]//20个是不够的
s=0
sum=0
for(i=2i<=1000i++)
{
s=0//此处s=0一定要加,因为前几次循环的时候s的值已经改变
k=0
for(j=1j<ij++)
{
if((i%j)==0){a[k]=jk++}
}
for(h=0h<kh++)
{
s+=a[h]
}
if(i==s){printf("%d ",i)sum++}
}
printf("完数的个数:%d\n",sum)
}
时间太紧,没注意程序的简洁性和效率,这个需要你自己改了!
#include <stdio.h>void main(){
int s,i,j
for(s=2s<=1000s++)
{
j=0
for(i=s-1i>0i--)
{
if(s%i==0){j=j+i}
}
if(s==j)
{
printf("完数:%d the factors are ",s)
for(i=1i<si++)
{
if(s%i==0){printf("%d,",i)}
}
printf("\n")
}
}
}