文章

9

粉丝

37

获赞

91

访问

2.3k

头像
梅森素数 题解:
P1697 华中科技大学机试题
发布于2025年2月27日 12:06
阅读数 189

看似长整型如果一个一个判断会超时,其实2的指数增长非常的快,很快就会超过n的值,所以只需在循环中判断2的指数是否大于n,大于n,则之后的数就没必要判断了,就算是10的9次方,到2的32次方就超过范围了。

#include<bits/stdc++.h>
using namespace std;
bool sushu(long n){
    if(n<=1) return false;
    for(long i=2;i<=sqrt(n);i++){
        if(n%i==0){
            return false;
        }
    }
    return true;
}
int main(){
    long n;

    cin>>n;
    for(long i=2;i<=n;i++){
        if(sushu(i)){
            long s=pow(2,i)-1;
            if(s>n) break;
            if(sushu(s)){
                printf("M(%ld)=%ld\n",i,s);
            }
        }
    }
    return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发