找出1000以内的所有“完数”(若一个数的各因子之和等于该数本身,则称其为“完数”)。例如,6的因子是1、2、3,而6=1+2+3,所以6是完数。28也是完数,因为28的因子是1、2、4、7、14,而28=1+2+4+7+14。C语言
时间: 2024-09-25 08:05:51 浏览: 42
在C语言中,我们可以遍历1000以内的每个数,检查它的所有因子是否相加等于该数本身。以下是实现的一个简单例子:
```c
#include <stdio.h>
#include <stdbool.h>
bool isPerfectNumber(int num) {
int sum = 0;
for (int i = 1; i * i <= num; i++) {
if (num % i == 0) {
// 如果i是因子,那么num/i也是因子(除非i已经等于sqrt(num),此时j不需要再检查)
if (i != num / i)
sum += i + num / i;
else
sum += i; // 只有当i和num/i相等时才加一次
}
}
return sum == num && num > 1; // 检查是否是大于1的完全数
}
int main() {
for (int i = 2; i < 1000; ++i) {
if (isPerfectNumber(i)) {
printf("%d 是一个完美数.\n", i);
}
}
return 0;
}
相关问题
找出1000以内的所有完数。若一个数的各因子之和等于该数本身,则称其为完数。例如,6的因子是1,2,3,而6=1+2+3,所以6是完数。28也是完数,28=1+2+4+7+14。
找出1000以内的所有完数。若一个数的各因子之和等于该数本身,则称其为完数。例如,6的因子是1、2、3,而6=1+2+3,所以6是完数。例如,28的因子是1、2、4、7、14,而28=1+2+4+7+14,所以28是完数。
用c语言写一个找出1000以内的所有“完数”。若一个数的各因子之和等于改数本身,则称其为“完数”。例如,6的因子是1、2、3,而6=1+2+3,所以6是完数的代码
#include<stdio.h>
int main()
{
int num, i, sum;
printf("1000以内的完数:\n");
for(num=1; num<=1000; ++num)
{
sum = 0;
for(i=1; i<num; ++i)
{
if(num%i==0)
{
sum+=i;
}
}
if (sum == num)
printf("%d 是完数。\n",num);
}
return 0;
}
阅读全文