用c语言完数是指一个整数恰好等于它的因子之和(除自身外),则称这个数为完数。从键盘先后输入两个不大于9999的正整数m和n,若m>n,则交换两数。然后求m~n(m和n均为正整数且m≤n)之间的所有完数。
时间: 2024-05-12 16:20:44 浏览: 82
```c
#include <stdio.h>
int main() {
int m, n, i, j, sum;
scanf("%d %d", &m, &n);
if (m > n) { // 如果m>n,则交换两数
int temp = m;
m = n;
n = temp;
}
for (i = m; i <= n; i++) { // 枚举m~n之间的每个数
sum = 0;
for (j = 1; j < i; j++) { // 枚举i的每个因子
if (i % j == 0) {
sum += j;
}
}
if (sum == i) { // 如果i是完数,则输出
printf("%d ", i);
}
}
return 0;
}
```
相关问题
C语言编写完数是指一个整数恰好等于它的因子之和(除自身外),则称这个数为完数。从键盘先后输入两个不大于9999的正整数m和n,若m>n,则交换两数。然后求m~n(m和n均为正整数且m≤n)之间的所有完数。
以下是 C 语言代码实现:
```c
#include <stdio.h>
int main() {
int m, n, sum;
// 从键盘输入 m 和 n
printf("请输入两个不大于9999的正整数m和n,用空格隔开:");
scanf("%d %d", &m, &n);
// 如果 m 大于 n,则交换两个数
if (m > n) {
int temp = m;
m = n;
n = temp;
}
// 遍历 m 到 n 之间的所有数
for (int i = m; i <= n; i++) {
sum = 0;
// 找到 i 的所有因子并求和
for (int j = 1; j < i; j++) {
if (i % j == 0) {
sum += j;
}
}
// 如果和等于 i,则说明 i 是一个完数
if (sum == i) {
printf("%d ", i);
}
}
return 0;
}
```
代码的实现思路很简单,就是先输入 m 和 n,然后判断 m 和 n 的大小关系,如果 m 大于 n,就交换两个数。接着,遍历 m 到 n 之间的所有数,找到每个数的所有因子并求和,如果和等于这个数,则说明这个数是一个完数。最后,将所有完数输出即可。
c语言代码,完数是指一个整数恰好等于它的因子之和(除自身外),则称这个数为完数。从键盘先后输入两个不大于9999的正整数m和n,若m>n,则交换两数。然后求m~n(m和n均为正整数且m≤n)之间的所有完数。
```c
#include <stdio.h>
int main() {
int m, n;
printf("请输入不大于9999的正整数m和n:");
scanf("%d%d", &m, &n);
if (m > n) { //若m>n,则交换两数
int temp = m;
m = n;
n = temp;
}
for (int i = m; i <= n; i++) { //枚举m~n之间的所有数
int sum = 0; //记录因子之和
for (int j = 1; j < i; j++) {
if (i % j == 0) { //找到因子
sum += j; //累加因子
}
}
if (sum == i) { //若因子之和等于本身,则输出
printf("%d是一个完数\n", i);
}
}
return 0;
}
```
阅读全文