一个数如果恰好等于它的所有因子之和,这个数就称为“完数”。请利用C语言编写一个判别 m 是否为完数的函数,并编写主函数,通过调用此函数统计自然数 1 — 100 间完数的个数。
时间: 2024-02-22 20:59:20 浏览: 22
好的,我可以帮你编写这个程序。以下是代码:
```c
#include <stdio.h>
int isPerfect(int m)
{
int i, sum = 0;
for(i = 1; i < m; i++)
{
if(m % i == 0)
{
sum += i;
}
}
if(sum == m)
{
return 1; // m是完数
}
else
{
return 0; // m不是完数
}
}
int main()
{
int i, count = 0;
for(i = 1; i <= 100; i++)
{
if(isPerfect(i))
{
count++;
printf("%d ", i); // 输出完数
}
}
printf("\n1-100间完数的个数为:%d", count);
return 0;
}
```
程序中的 `isPerfect` 函数用于判断一个数是否为完数。它通过循环计算该数的所有因子之和,如果和等于该数本身,则说明该数是完数,返回1;否则返回0。
主函数中用循环遍历1-100间的所有数,调用 `isPerfect` 函数判断是否为完数,如果是,则输出该数,并计数器加1。最后输出1-100间完数的个数。
注意,完数是指恰好等于它的所有因子之和的数,因此在计算因子之和时,循环的上限应该是该数本身,而不是该数的平方根。