求正整数2和n之间的所有完全数,一行输出一个C语言
时间: 2023-05-24 16:06:40 浏览: 110
程序。
```c
#include <stdio.h>
int main() {
int n, i, sum;
scanf("%d", &n);
for(i = 2; i <= n; i++) {
sum = 1;
for(int j = 2; j * j <= i; j++) {
if(i % j == 0) {
if(j == i / j) {
sum += j;
} else {
sum += j + i / j;
}
}
}
if(sum == i) {
printf("%d\n", i);
}
}
return 0;
}
```
相关问题
求整数2和n之间的完全数(一行一个数);完全数:因子之和等于它本身的自然数,输出一行一个数,按由小到大排序用c语言编写
以下是求整数2和n之间的完全数的C语言代码:
```c
#include <stdio.h>
int main()
{
int n;
printf("请输入一个正整数n:");
scanf("%d", &n);
int i, j, sum;
for (i = 2; i <= n; i++) {
sum = 0;
for (j = 1; j < i; j++) {
if (i % j == 0) {
sum += j;
}
}
if (sum == i) {
printf("%d\n", i);
}
}
return 0;
}
```
代码思路:
1. 用户输入一个正整数n;
2. 从2开始依次遍历到n,对于每个数i,求出它的所有因子之和sum;
3. 如果sum等于i,则i是完全数,输出i。
例如,当用户输入n为100时,程序输出的完全数为:
```
6
28
```
注意,完全数很少,因此程序运行的时间可能比较长。可以通过优化算法来提高效率。
求整数2和n之间的完全数(一行一个数);完全数:因子之和等于它本身的自然数,用c语言编写
#include <stdio.h>
int main() {
int n, i, j, sum;
printf("请输入一个正整数n:");
scanf("%d", &n);
for (i = 2; i <= n; i++) {
sum = 0;
for (j = 1; j < i; j++) {
if (i % j == 0) {
sum += j;
}
}
if (sum == i) {
printf("%d\n", i);
}
}
return 0;
}
阅读全文