问题遇到的现象和发生背景
9.一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1,2,3,而6=1+2+3,因此6是“完数”。编程序找出1000之内的所有完数,并按下面格式输出其因子:
我的解答思路和尝试过的方法
如何表示这个因子?(辗转相除法怎么使用)如何排除这个数本身?
我想要达到的结果
6 its factors are 1,2,3
9.一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1,2,3,而6=1+2+3,因此6是“完数”。编程序找出1000之内的所有完数,并按下面格式输出其因子:
如何表示这个因子?(辗转相除法怎么使用)如何排除这个数本身?
6 its factors are 1,2,3
供参考:
#include <stdio.h>
int main()
{
int N = 1000, i, n, s;
//scanf("%d", &N);
for (n = 2; n <= N; n++)
{
for (i = 1, s = 0; i <= n / 2; i++)
{
if (n % i == 0)
{
s = s + i;
}
}
if (s == n)
{
printf("%d its factors are 1", n);
for (i = 2; i <= n / 2; i++)
{
if (n % i == 0)
printf(",%d", i);
}
printf("\n");
}
}
return 0;
}