这个是题目:
这个是我的代码
int factorsum( int number )
{
int i=0,n=number,sum=1;
for(i=2;iif(n%i==0)
{
sum+=i;
}
}
return sum;
}
void PrintPN( int m, int n )
{
int i=0,sum=0,c=0;
if(i==1)
{
printf("No perfect number");
}
else
{
for(i=m;i<=n;i++)
{
if( factorsum(i) == i )
{
printf("%d = 1",i);
for(int j=2;jif(i%j==0)
{
printf(" + %d",j);
c++;
}
}
printf("\n");
c++;
}
}
if(c==0)
{
printf("No perfect number");
}
}
}
请问我写的哪里错误了呢?提交的时候显示部分正确 谢谢
17行,if(i==1)不对吧,应该是if(n==1)
修改如下,供参考:
#include <stdio.h>
int factorsum(int number)
{
int i = 0, n = number, sum = 1;
if (number <= 1) //排除 1 不是完数
return 0;
for (i = 2; i < n; i++)
{
if (n % i == 0)
{
sum += i;
}
}
return sum;
}
void PrintPN(int m, int n)
{
int i = 0, sum = 0, c = 0;
//if (i == 1)
//{
// printf("No perfect number");
//}
//else
//{
for (i = m; i <= n; i++)
{
if (factorsum(i) == i)
{
printf(c++ == 0 ? "%d = 1" : "\n%d = 1", i);
for (int j = 2; j < i; j++)
{
if (i % j == 0)
{
printf(" + %d", j);
//c++;
}
}
//printf("\n");
//c++;
}
}
if (c == 0)
{
printf("No perfect number");
}
//}
}
int main()
{
int m, n;
scanf("%d %d", &m, &n);
if (factorsum(m) == m)
printf("%d is a perfect number\n", m);
if (factorsum(n) == n)
printf("%d is a perfect number\n", n);
PrintPN(m, n);
return 0;
}