我正在编写一个代码来打印给定范围内的所有完美数字。 我对我的代码进行了试运行。但我没有得到预期的输出。
#include<stdio.h>
void perfect(int,int);
int main()
{
int start,end;
printf("Enter range");
scanf("%d%d",&start,&end);
perfect(start,end);
return 0;
}
void perfect(int s,int e)
{
int i=0,j=0,sum=0;
for(i=s;i<=e;i++)
{
for(j=1;j<i;j++)
{
if(i%j==0) //i contains the number in range
{
sum=sum+j;
}
}
if(sum==i) // if sum of all factors of the number is equal to the number then its perfect number
{
printf("%d",i);
}
}
}
输入:1 10 无可见输出。 预期输出:6
最佳答案
在进入外循环之前将sum
初始化为0,但在启动内循环时没有清除它。对于您要测试的每个数字,您需要从总和 0 开始。
int i=0,j=0,sum=0;
for(i=s;i<=e;i++)
{
sum = 0;
for(j=1;j<i;j++)
{
...
关于c - 完全数逻辑检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42772623/