请对比修改的地方:
#include"stdio.h"
main()
{int i,c,n=1,sum=0
for(i=1i<=100i++)
{c=i
for(n=1n<=i/2n++)
if(i%n==0) c=c-n
if(c==0)
{printf("%d\n",i)
sum++}
}
printf("100以内有%d个完数\n",sum)
}
class forDemo2{
public static void main(String[] args)
{
int sum
int i=2
while(i!=1001)
{
sum = 0 //每次循环sum重新赋值为0
for(int j=1j<ij++)
{
if (i%j==0) sum+=j
}
if(i==sum) System.out.println(i+" ")
i++
}
}
}
/*完数,即完美数,一个数如果恰好等于除它本身外的因子之和,这个数就称为完数。例如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)
}
时间太紧,没注意程序的简洁性和效率,这个需要你自己改了!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)