C语言,用函数求出m和n两个数之间的所有素数和完数
时间: 2023-05-31 07:02:14 浏览: 162
这里提供两个函数分别用于求素数和完数:
1. 求素数的函数
```c
int isPrime(int n) {
int i;
for (i = 2; i <= n / 2; i++) {
if (n % i == 0) {
return 0;
}
}
return 1;
}
```
该函数接受一个整数参数n,返回值为1表示n是素数,返回值为0表示n不是素数。该函数的实现思路是从2开始到n/2遍历所有数字,如果n能够整除其中任意一个数字,则n不是素数,否则n是素数。
2. 求完数的函数
```c
int isPerfect(int n) {
int i, sum = 0;
for (i = 1; i <= n / 2; i++) {
if (n % i == 0) {
sum += i;
}
}
return sum == n;
}
```
该函数接受一个整数参数n,返回值为1表示n是完数,返回值为0表示n不是完数。该函数的实现思路是从1开始到n/2遍历所有数字,如果n能够整除其中任意一个数字,则将该数字加入sum中,最后判断sum是否等于n,如果等于则n是完数,否则n不是完数。
结合以上两个函数,可以编写出求m和n之间所有素数和完数的代码:
```c
#include <stdio.h>
int isPrime(int n);
int isPerfect(int n);
int main() {
int m, n, i, sumPrime = 0, sumPerfect = 0;
printf("请输入m和n:\n");
scanf("%d%d", &m, &n);
for (i = m; i <= n; i++) {
if (isPrime(i)) {
sumPrime += i;
}
if (isPerfect(i)) {
sumPerfect += i;
}
}
printf("%d和%d之间的素数和为:%d\n", m, n, sumPrime);
printf("%d和%d之间的完数和为:%d\n", m, n, sumPerfect);
return 0;
}
int isPrime(int n) {
int i;
for (i = 2; i <= n / 2; i++) {
if (n % i == 0) {
return 0;
}
}
return 1;
}
int isPerfect(int n) {
int i, sum = 0;
for (i = 1; i <= n / 2; i++) {
if (n % i == 0) {
sum += i;
}
}
return sum == n;
}
```
阅读全文