如果一个素数可以写成的形式,其中p是一个正整数,那么该素数就称为梅森素数。 例如,p为2时,为3,3就是梅森素数。 注意:1不是素数。 要求定义和调用函数:int isPrime(int n),如果n是素数,该函数返回1,否则返回0。
时间: 2024-02-18 21:05:06 浏览: 75
1亿以内的质数(共5761455个数).txt_1亿以内素数的个数
5星 · 资源好评率100%
好的,下面是代码实现:
```
#include <stdio.h>
#include <math.h>
int isPrime(int n){
// 判断n是否小于2,小于2则不是素数
if(n < 2){
return 0;
}
// 遍历2到n-1的所有数,如果有能整除n的数,则n不是素数
for(int i = 2; i <= sqrt(n); i++){
if(n % i == 0){
return 0;
}
}
return 1;
}
int isMersennePrime(int p){
// 判断p是否为素数
if(!isPrime(p)){
return 0;
}
// 判断2^p-1是否为素数
if(isPrime(pow(2, p) - 1)){
return 1;
}
return 0;
}
int main(){
int p;
printf("请输入一个正整数p:");
scanf("%d", &p);
if(isMersennePrime(p)){
printf("2^%d-1是梅森素数\n", p);
}
else{
printf("2^%d-1不是梅森素数\n", p);
}
return 0;
}
```
这段代码中,`isPrime(n)`函数用于判断一个正整数n是否为素数,如果是素数则返回1,否则返回0。`isMersennePrime(p)`函数用于判断2^p-1是否为梅森素数,如果是梅森素数则返回1,否则返回0。
在主函数中,我们输入一个正整数p,然后调用`isMersennePrime(p)`函数判断2^p-1是否为梅森素数,最后输出判断结果。
阅读全文