用函数输出两个整数之间的所有完数,输出的最后一个数没有空格,输出的每两个数之间都用空格隔开

#include<stdio.h>
int factorsum(int i);
int main()
{
int a,b,i,l;
while(scanf("%d%d",&a,&b)!=EOF)
{
factorsum(i);

}

return 0;
}
int factorsum(int i)
{
int n,h,s,a,b,l;

for(i=a;i<=b;i++)
{
s=0; l=0 ;
for(n=1;n<=i/2;n++)
{
if(i%n==0)
{
s=s+n;}
}

if(s==i)
{l++;}
if(l=1)
{printf("%d",i);}else{
printf(" %d",i);}
}
printf("\n");

}

代码修改如下,如有帮助,请帮忙采纳一下,谢谢。:

img

#include<stdio.h>
int factorsum(int i);
int main()
{
    int a,b,i,l;
    while(scanf("%d%d",&a,&b)!=EOF)
    {
        l = 0;
        for(i=a;i<=b;i++)
        {
            if(factorsum(i))
            {
                if(l==0) { printf("%d",i); l++;}
                else printf(" %d",i);
            }
        }
        printf("\n");

    }

    return 0;
}
int factorsum(int n)
{
    int i,sum = 0,t;
    for(i=1;i<n;i++)
    {
        if(n%i==0)
        {
            sum += i;
        }
    }
    if(sum == n) return 1;
    return 0;
}

少了一个等于号,在%d后面加空格,修改如下:

img

if(s==i){
  l++;
}
if(l==1){
  printf("%d ",i);
}else{
  printf("%d ",i);
}