c语言无暇素数用函数
时间: 2023-11-30 10:05:25 浏览: 58
以下是一个C语言的无暇素数判断函数的例子:
```c
#include <stdio.h>
#include <math.h>
int isPrime(int n) {
if (n <= 1) {
return 0;
}
int sqr = (int)sqrt(n);
for (int i = 2; i <= sqr; i++) {
if (n % i == 0) {
return 0;
}
}
return 1;
}
int main() {
int m, n, num = 0, sum = 0;
scanf("%d %d", &m, &n);
for (int i = m; i <= n; i++) {
if (isPrime(i)) {
sum += i;
num++;
}
}
printf("%d %d\n", num, sum);
return 0;
}
```
该函数接受一个整数作为参数,返回1表示该整数是素数,返回0表示该整数不是素数。在主函数中,我们可以调用该函数来判断一个区间内的素数个数和素数和。
相关问题
c语言求出ab之间的无暇素数
以下是一个求解ab之间的无暇素数的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <math.h>
bool is_prime(int n) {
if (n <= 1) {
return false;
}
for (int i = 2; i <= sqrt(n); i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
int main() {
int a, b;
printf("请输入a和b的值:");
scanf("%d %d", &a, &b);
printf("%d到%d之间的无暇素数有:\n", a, b);
for (int i = a; i <= b; i++) {
if (is_prime(i) && is_prime(2 * i + 1)) {
printf("%d\n", i);
}
}
return 0;
}
```
该程序通过调用 `is_prime()` 函数来判断一个数是否为素数。在 `main()` 函数中,程序获取用户输入的 `a` 和 `b` 的值,并遍历从 `a` 到 `b` 之间的所有整数。如果一个数 `i` 是素数,并且 `2 * i + 1` 也是素数,则输出 `i`,即为该区间内的无暇素数。
需要注意的是,由于该程序使用了 `sqrt()` 函数来计算平方根,因此需要在编译时加上 `-lm` 参数,以链接数学库。
c语言编写程序求出ab之间的无暇素数
以下是利用C语言编写程序求出ab之间的无暇素数的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int is_prime(int n) {
if (n < 2) {
return 0;
}
for (int i = 2; i <= sqrt(n); i++) {
if (n % i == 0) {
return 0;
}
}
return 1;
}
int is_perfect(int n) {
int sum = 1;
for (int i = 2; i <= sqrt(n); i++) {
if (n % i == 0) {
sum += i;
if (i != n / i) {
sum += n / i;
}
}
}
if (sum == n && n != 1) {
return 1;
}
return 0;
}
int main() {
int a, b;
printf("请输入a和b的值(a<=b):");
scanf("%d%d", &a, &b);
printf("在%d和%d之间的无暇素数有:\n", a, b);
for (int i = a; i <= b; i++) {
if (is_prime(i) && is_perfect(i)) {
printf("%d ", i);
}
}
printf("\n");
return 0;
}
```
代码中,`is_prime`函数用于判断一个数是否为素数,`is_perfect`函数用于判断一个数是否为无暇数。在`main`函数中,输入a和b的值,然后循环从a到b,找出无暇素数并输出。