梅森数,执行结果不出数字,只有None是为什么?

img


#include <iostream>
#include <math.h>
using namespace std;
int main(){    
    int n,p=0;
    cin>>n;
    for(int i=2;i<=n;i++){
        int s=pow(2,i)-1;
        for(int j=2;j<=sqrt(s);j++){
            if(s%j==0)
                break;
            if(j>sqrt(s)){
                cout<<s<<endl;
                p++;
            }
        }
        if(p==0)
            cout<<"None"<<endl;
        return 0;
    }
}

执行的结果不是数字,是None是怎么回事?求解

修改如下,供参考:

#include <iostream>
#include <math.h>
using namespace std;
int main()
{
    int n,i,j,p=0;
    cin>>n;
    for(i=2;i <= n;i++){
        int s=pow(2,i)-1;
        for(j=2;j<=sqrt(s);j++){
            if(s%j==0)
                break;
        }
        if(j>sqrt(s)){
           cout<<s<<endl;
           p++;
        }
    }
    if(p==0)
        cout<<"None"<<endl;
    return 0;
}

我帮你重打吧,你思路不对

把 if(j>sqrt(s))这个代码段放到内层的for循环外面