输出1-1000以内的完数遇到问题
我想对1-1000以内的数进行操作,
如果是完数,则输出:如6 its factors are 1,2,3.
如果不是完数,则输出:如2,no
但是输出的结果是一大片空白,到了840这个数才输出840,no,想知道原因,求大lao帮忙解答,谢谢!
#include<stdio.h>
int iswanshu(int n);
void showfactors(int n);
int maxfactor(int n);
int main()
{
int i;
for(i=2;i<1001;i++)
{
if(iswanshu(i))
{
printf("%d its factors are ",i);
showfactors(i);
}
else printf("%d,no\n",i);
}
return 0;
}
int iswanshu(int n)
{
int i;
int s=0;
for(i=1;i<n;i++)
{
if(n%i==0) s+=i;
}
if(s==n) return 1;
else return 0;
}
int ismaxfactor(int n)
{
int i;
for(i=n-1;i>=1;i--)
{
if(n%i==0)
{
return 1;
}
}
}
void showfactors(int n)
{
int i;
for(i=1;i<n;i++)
{
if(n%i==0)
{
printf("%d",i);
if(!ismaxfactor(n)) printf(",");
if(ismaxfactor(n)) printf(".\n");
}
}
}