c语言读入两个正整数n,m(1<n<m<1000),输出[n,m]内所有完数
时间: 2024-02-21 20:58:49 浏览: 26
好的,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语言读入两个正整数n,m,输出[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 10000` 来测试一下。
用c语言输入两个正整数n<m<106,输出1/n2+1/(n+1)2+…+1/m2
```
#include <stdio.h>
int main()
{
int n, m, i;
double sum = 0;
printf("Enter two positive integers n and m (n < m < 106): ");
scanf("%d%d", &n, &m);
for (i = n; i <= m; i++)
{
sum += 1.0 / (i * i);
}
printf("The sum of 1/n^2 + 1/(n+1)^2 + ... + 1/m^2 is: %lf\n", sum);
return 0;
}
```