大一新生学不明白c语言了!
程序功能:输入两个正整数m和n(1<=m<=n<=10000),输出m到n之间的所有完数(完数就是因子和与它本身相等的数)。要求定义并调用函数factorsum(i),它的功能是返回i的因子和。例如:factorsum(12)的返回值是16
非完数输出循环1,真的学不明白。
#include <stdio.h>
int main()
{
int m, n, i;
int fac(int i);
printf("输入两个正整数m和n(1<=m<=n<=10000):");
scanf_s("%d%d", &m, &n);
printf("%d到%d之间的所有完数是:",m,n);
i = m;
while (i <= n)
{
if (i = fac(i))/*调用函数*/
printf("%d ", i);
i++;
}
return 0;
}
int fac(int a)
{
if (a == 1) return a;
int sum = 0;
for (int i = 1; i < a; i++) {
if (a % i == 0)
sum = sum + i;}
if (a == sum) return sum;
}