1.问题描述
求某一范围内完数的个数
如果一个数等于它的因子之和,则称该数为完数(或完全数)。例如,6的因子为1,2,3,而6=1+2+3,因此6是完数。
2.问题分析
根据完数的定义,解决本题的关键是计算出所选取的整数i的因子,将各个因子累加到变量s,若s等于i,则可认为i为完数。
3.源码实现
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int n = 0;
int s = 0;
int i, j;
scanf("%d", &n);
for(i=1; i<n; i++)
{
s = 0;
for(j=1; j<i; j++)
{
if(i % j == 0)
{
s += j;
}
}
if(s == i)
{
printf("%d\n", s);
}
}
return 0;
}
4.编译源码
$ gcc -o test test.c -std=c89
5.运行及其结果
./test
10000
6
28
496
8128
网友评论