c语言求一个数内的所有完数
时间: 2024-05-08 14:22:23 浏览: 86
请参考以下代码,它可以找出给定数范围内的所有完数:
```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语言判断一个数是否是完数
在C语言中,判断一个数是否是完数(Perfect Number),通常是指该数的所有真因数(除了自身外的正因子)加起来正好等于它本身的数。例如,6是一个完数,因为它有三个因数1、2和3,它们相加等于6。
下面是一个简单的函数示例,用于检查一个整数n是否是完数:
```c
#include <stdio.h>
// 函数声明
int isPerfect(int n);
int main() {
int num;
printf("请输入一个整数: ");
scanf("%d", &num);
if (isPerfect(num)) {
printf("%d 是一个完数。\n", num);
} else {
printf("%d 不是完数。\n", num);
}
return 0;
}
// 完数检测函数
int isPerfect(int n) {
int sum = 0; // 初始化因子和为0
for (int i = 1; i * i <= n; i++) { // 只需检查到 sqrt(n)
if (n % i == 0) {
// 如果i是因子,那么它的另一个因子是 n / i
sum += i;
if (i != n / i) { // 当i不等于n/i时,说明还有一个因子
sum += n / i;
}
}
}
// 如果因子之和等于原数,则是完数,反之则不是
return sum == n ? 1 : 0;
}
```
阅读全文