用C语言编写输入200以内的完数
时间: 2023-04-05 21:02:43 浏览: 154
请看以下代码:
#include <stdio.h>
int main() {
int i, j, sum;
for (i = 1; i <= 200; i++) {
sum = 0;
for (j = 1; j < i; j++) {
if (i % j == 0) {
sum += j;
}
}
if (sum == i) {
printf("%d是完数\n", i);
}
}
return 0;
}
以上代码可以输出200以内的完数。
相关问题
如何用C语言编写1000以内完数
完数是指一个数等于其所有因子之和,例如6就是一个完数,因为6=1+2+3。以下是用C语言编写1000以内完数的代码:
```c
#include <stdio.h>
int main() {
int i, j, sum;
for (i = 1; i <= 1000; i++) {
sum = 0;
for (j = 1; j < i; j++) {
if (i % j == 0) {
sum += j;
}
}
if (sum == i) {
printf("%d是完数\n", i);
}
}
return 0;
}
```
代码中,我们使用两个for循环,外层循环控制要检查哪些数字是完数,内层循环则用来计算每个数字的因子之和。如果某个数字的因子之和等于它本身,那么就输出它是一个完数。
用c语言输入一千以内的完数
在C语言中,一个完数是指它的所有真因数(除了自身之外的因子)加起来等于它本身的数。例如,6是一个完数,因为它有因数1、2和3,它们之和正好等于6。我们可以编写一个程序,让用户输入一个范围,然后检查在这个范围内是否存在完数。这里有一个简单的示例:
```c
#include <stdio.h>
#include <stdbool.h>
bool is_perfect_number(int num) {
long long sum = 1;
for (int i = 2; i * i <= num; i++) { // 遍历到sqrt(n)
if (num % i == 0) {
// 如果i是因子,那么num/i也是因子
sum += i;
if (i != num / i) { // 如果i不是num/i,意味着还有一个因子
sum += num / i;
}
}
}
return sum == num && num > 1; // 完数大于1且总和等于本身
}
int main() {
int max_num;
printf("请输入一个整数作为上限(不超过1000): ");
scanf("%d", &max_num);
printf("在%d以内的完数有:\n", max_num);
for (int i = 1; i <= max_num; i++) {
if (is_perfect_number(i)) {
printf("%d ", i); // 输出找到的完数
}
}
return 0;
}
阅读全文