素数统计
作者:互联网
题目描述
所谓梅森数,是指形如 的一类数,其中指数p是素数,常记为Mp。如果一个梅森数是一个素数,就称为梅森素数,例如3、7、31、127等。
编写一个程序,统计m和n之间梅森素数的个数()。
输入
单组输入,输入两个正整数m和n()。
输出
输出m和n之间梅森素数的个数。
样例输入
3 3
样例输出
1
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#define ll long long
using namespace std;
bool judge(ll a)
{
ll i;//本人经常在定义这块出错,还总是找不到原因,应当吸取教训
if(a==1)return false;
if(a<=3||a==5)return true;
if(a%2==0||a%3==0)return false;
for(i=5;i<=sqrt(a);i+=6)
if(a%i==0||a%(i+2)==0)return false;
return true;
}
int main()
{
int p;
ll m,n,s=0,temp;
cin>>m>>n;
for(p=1;pow(2,p)-1<=n;p++)
{
temp=pow(2,p)-1;
if(temp<m)continue;
if(temp>n)break;
if(judge(temp)&&judge(p))
s++;
}
cout<<s<<endl;
}
标签:梅森,temp,ll,素数,judge,include,统计 来源: https://blog.csdn.net/m0_52380556/article/details/114712724