一,题目分析
一个数如果恰好等于它的因子之和,这个数就称为“完数”。
例如,6的因子为1,2,3,而6=1+ 2+3,因此6是“完数”。
编程序找出1000之内的所有完数,并输出其因子:
二,算法思想:
1.判断一个数是否为完数
bool isprefect(int n)
{
int num = 0;
for (int i = 1; i < n; i++)
{
if (n % i == 0)
{
num += i;
}
}
if (n == num)
return true;
else
return false;
}
2.输出函数
void show(int n)
{
printf("%d=1", n);
for (int i = 2; i < n; i++)
{
if (n % i == 0)
{
printf("+%d", i);
}
else
continue;
}
printf("\n");
}
3.遍历1000之内的所有完数
for (; i < 1000; i++)
{
if (isprefect(i))
{
printf("%d\n", i);
show(i);
}
}
三,代码详情
详细代码如下所示:
#include <stdio.h>
bool isprefect(int n)
{
int num = 0;
for (int i = 1; i < n; i++)
{
if (n % i == 0)
{
num += i;
}
}
if (n == num)
return true;
else
return false;
}
void show(int n)
{
printf("%d=1", n);
for (int i = 2; i < n; i++)
{
if (n % i == 0)
{
printf("+%d", i);
}
else
continue;
}
printf("\n");
}
int main()
{
int i = 1;
for (; i < 1000; i++)
{
if (isprefect(i))
{
printf("%d\n", i);
show(i);
}
}
}