c语言求一个数内的所有完数
时间: 2024-05-08 08:22:23 浏览: 85
请参考以下代码,它可以找出给定数范围内的所有完数:
```c
#include <stdio.h>
int main()
{
int num, i, j, sum;
printf("请输入一个正整数:");
scanf("%d", &num);
printf("完数有:");
for (i = 1; i <= num; i++) {
sum = 0;
for (j = 1; j < i; j++) {
if (i % j == 0) {
sum += j;
}
}
if (sum == i) {
printf("%d ", i);
}
}
return 0;
}
```
解释:
- 外层循环 `for (i = 1; i <= num; i++)` 用于遍历给定数范围内的所有整数。
- 内层循环 `for (j = 1; j < i; j++)` 用于求出当前整数 `i` 的因子和。
- `if (sum == i)` 判断当前整数 `i` 是否为完数,即它的因子和是否等于它本身。
希望能对你有所帮助。
相关问题
用c语言求100之内的所有完数。
好的,下面是程序代码:
#include <stdio.h>
int main() {
int i, j, sum = 0;
for (i = 1; i <= 100; i++) {
sum = 0;
for (j = 1; j < i; j++) {
// 判断i能否被j整除
if (i % j == 0) {
sum += j;
}
}
// 判断i是否为完数
if (sum == i) {
printf("%d ", i);
}
}
return 0;
}
运行程序后会输出:6 28。其中6和28都是100以内的完数。
用c语言判定一个数是否是完数
完数是指一个数等于它的因子之和,例如6是完数,因为6=1+2+3。以下是用C语言判定一个数是否是完数的代码:
#include <stdio.h>
int main() {
int num, sum = 0;
printf("请输入一个正整数:");
scanf("%d", &num);
for (int i = 1; i < num; i++) {
if (num % i == 0) {
sum += i;
}
}
if (sum == num) {
printf("%d是完数", num);
} else {
printf("%d不是完数", num);
}
return 0;
}
阅读全文