#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>
main()
{
int i,j
int sum
for(i=1i<=1000i++)
{
sum=0
for(j=1j<ij++)
{
if(i%j==0)
sum+=j
}
if(sum==i)
{
printf("%d its factors are ",i)
for(j=1j<ij++)
if(i%j==0)
printf("%d ",j)
}
printf("\n")
}
扩展资料
1、完全数是一些特殊的自然数,它所有的真因子即除了自身以外的约数的和即因子函数,恰好等于它本身。
2、第一个完全数是6,它有约数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3=6。第二个完全数是28。
3、有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4 + 7 + 14=28。后面的数是496、8128。
#include "stdio.h"//判断n是否是完数
bool isWanShu(int n)
{
int sum=0, j
for(j=1j<nj++)
{
if(0==n%j) sum+=j
}
if(sum==n) {
printf("%d 是完数, ", n)
return true
} else {
return false
}
}
//输出整数的n的因子(自身除外)
void printFactor(int n)
{
int i
printf("%d 的因子: ", n)
for(i=1i<ni++) {
if(n%i==0) printf("%d ", i)
}
printf("\n")
}
int main()
{
int i
for(i=1i<=1000i++) {
if ( isWanShu(i)) { //如果i是完数,则输出它的因子。
printFactor(i)
}
}
return 0
}
输出结果:
6 是完数, 6 的因子: 1 2 3
28 是完数, 28 的因子: 1 2 4 7 14
496 是完数, 496 的因子: 1 2 4 8 16 31 62 124 248