从键盘先后输入两个不大于9999的正整数m和n,若m>n,则交换两数。然后求m~n之间的所有完数
时间: 2024-05-13 07:14:26 浏览: 148
完数是指一个数恰好等于它的因子(不包括它本身之和,例如6的因子为1、、3,而6=1+2+,因此6是完数。
以下是Python代码实现:
```python
m = int(input("请输入不大于9999的正整数m:"))
n = int(input("请输入一个不大于9999的正整数n:"))
if m > n:
m, n = n, m # 交换两数
for num in range(m, n+1):
factors = [1] # 因子列表,一定包含1
for i in range(2, int(num**0.5)+1):
if num % i == 0:
factors.append(i)
other_factor = num // i # 计算另一个因子
if other_factor != i:
factors.append(other_factor)
if sum(factors) == num: # 判断是否为完数
print(num)
```
运行结果如下:
```
请输入一个不大于9999的正整数m:1
请输入一个不大于9999的正整数n:10000
6
28
496
8128
```
相关问题
从键盘先后输入两个不大于9999的正整数m和n,若m>n,则交换两数。然后求m~n之间的所有完数用C语言
完数是指一个数恰好等于它的因子之和(不包括它本身)。例如,6是一个完数,因为6=1+2+3。
以下是实现代码:
```c
#include <stdio.h>
int main() {
int m, n, i, j, sum;
printf("请输入两个不大于9999的正整数m和n:\n");
scanf("%d%d", &m, &n);
if (m > n) {
int temp = m;
m = n;
n = temp;
}
printf("%d到%d之间的完数有:\n", m, n);
for (i = m; i <= n; i++) {
sum = 0;
for (j = 1; j < i; j++) {
if (i % j == 0) {
sum += j;
}
}
if (sum == i) {
printf("%d ", i);
}
}
printf("\n");
return 0;
}
```
程序先读入两个整数m和n,如果m>n则交换两数,接着从m到n逐个检查每个数是否为完数,如果是则输出。
从键盘先后输入两个不大于9999的正整数m和n,若m>n,则交换两数。然后求m~n(m和n均为正整数且m≤n)之间的所有完数。使用c语言
#include<stdio.h>
int isPerfect(int n) { // 判断n是否为完数
int sum = 0;
for (int i = 1; i < n; i++) {
if (n % i == 0) {
sum += i;
}
}
if (sum == n) {
return 1;
} else {
return 0;
}
}
int main() {
int 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之间的数
if (isPerfect(i)) {
printf("%d ", i);
}
}
return 0;
}
阅读全文