编写C程序,从键盘先后输入两个不大于9999的正整数m和n(用逗号分开),若m>n,则交换两数。然后求m~n(m和n均为正整数且m≤n)之间的所有完数,输出也用逗号分隔。
时间: 2024-03-24 08:40:47 浏览: 80
c代码-输入两个正整数m和n,求其最大公约数和最小公倍数。
好的,以下是符合您要求的C语言程序:
```c
#include <stdio.h>
// 求一个数的所有因子之和
int sumOfFactor(int num) {
int sum = 1; // 1 一定是因子
for (int i = 2; i <= num / 2; i++) {
if (num % i == 0) {
sum += i;
}
}
return sum;
}
int main() {
int 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++) {
if (sumOfFactor(i) == i) { // 如果因子之和等于这个数本身,则是完数
printf("%d,", i);
}
}
return 0;
}
```
程序首先从键盘输入两个数m和n,如果m比n大,则交换两数。然后遍历m~n之间的所有数,对于每个数,我们调用`sumOfFactor`函数求出其所有因子之和,如果因子之和等于这个数本身,则说明这个数是完数,我们就输出它。最后输出的完数之间用逗号分隔。
阅读全文