c语言读入两个正整数n,m,输出[n,m]内所有完数
时间: 2024-02-21 17:58:47 浏览: 29
好的,C语言代码如下所示:
```c
#include <stdio.h>
int sum_of_factors(int num) {
/*
求一个数的因子和
*/
int res = 0;
for (int i = 1; i < num; i++) {
if (num % i == 0) {
res += i;
}
}
return res;
}
int main() {
int n, m;
scanf("%d %d", &n, &m);
for (int num = n; num <= m; num++) {
if (sum_of_factors(num) == num) {
printf("%d ", num);
}
}
return 0;
}
```
你可以输入 `1 10000` 来测试一下。
相关问题
c语言读入两个正整数n,m(1<n<m<1000),输出[n,m]内所有完数
好的,C语言代码如下:
```c
#include <stdio.h>
int sum_of_factors(int num) {
/*
求一个数的因子和
*/
int res = 0;
for (int i = 1; i < num; i++) {
if (num % i == 0) {
res += i;
}
}
return res;
}
int main() {
int n, m;
scanf("%d %d", &n, &m);
for (int num = n; num <= m; num++) {
if (sum_of_factors(num) == num) {
printf("%d ", num);
}
}
return 0;
}
```
注意,题目中给了条件 `1<n<m<1000`,因此在读入 `n` 和 `m` 的时候不需要做额外的判断。
c语言求两个正整数m和n最大公约数
C语言求两个正整数m和n最大公约数可以使用辗转相除法,也称为欧几里得算法。具体步骤如下:
1. 判断m和n的大小关系,使得m为较大值,n为较小值。
2. 用m除以n,得到余数r。
3. 若r为0,则n即为最大公约数。
4. 若r不为0,则令m=n,n=r,返回第2步。
C语言代码如下:
```
#include <stdio.h>
int gcd(int m, int n) {
int r;
while (n != 0) {
r = m % n;
m = n;
n = r;
}
return m;
}
int main() {
int m, n;
printf("请输入两个正整数:\n");
scanf("%d %d", &m, &n);
printf("%d和%d的最大公约数为%d\n", m, n, gcd(m, n));
return 0;
}
```
其中,函数gcd用于计算最大公约数,main函数用于输入两个正整数并输出它们的最大公约数。