其他分享
首页 > 其他分享> > 素数统计

素数统计

作者:互联网

题目描述
所谓梅森数,是指形如 的一类数,其中指数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