C语言打印n内完数

来源:百度知道 编辑:UC知道 时间:2024/09/23 01:35:59
一个数如果恰好等于它的因子之和,这个数就成为“完数”。例如,6的因子为1、2、3,而6=1+2+3,因此6是“完数”。编程序打印出n之内(包括n)所有的完数,并按如下格式输出其所有因子:
6 its factors are 1,2,3

关于输入
输入一个正整数

关于输出
输出 n 以内所有的完数及其因子,每行一个完数。

例子输入
7

例子输出
6 its factors are 1,2,3

我的程序:

#include<stdio.h>
#include<math.h>
void main()
{
int n,i,j=2,sum=1;
scanf("%d",&n);
for(i=2;i<=n;i++)
{
while(i>j)
{if(i%j==0)
sum=sum+j;
j++;
}
if(sum=i)
{
printf("%d its factors are 1",i);
for(j=2;j<i;j++)
{if(i%j==0)
printf(",%d",j);}
}
printf("\n");
}

}

请问错在哪里?要怎么改?仿佛是循环的嵌套出了问题
谢谢

#include<stdio.h>
#include<math.h>
void main()
{
int n,i,j=1,sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
while(i>j)
{
if(i%j==0)
sum=sum+j;
j++;
}
if(sum==i)
{
printf("%d its factors are 1",i);
for(j=2;j<i;j++)
{if(i%j==0)
printf(",%d",j);}
printf("\n");
}
sum=0;
j=1;
}

}
程序可以运行,你的if(sum=i)错误应该为==
每行一个完数。所以换行输出应该在if(sum=i){}大括号里面。
注意sum,j的还原。