以下是使用C++编写的解决方案:

#include <iostream>
#include <cmath>
using namespace std;

bool isPrime(int num) {
    if (num <= 1) {
        return false;
    }
    for (int i = 2; i <= sqrt(num); i++) {
        if (num % i == 0) {
            return false;
        }
    }
    return true;
}

int main() {
    int n;
    cin >> n;
    
    bool found = false;
    for (int i = 2; i <= pow(2, n) - 1; i++) {
        if (isPrime(i)) {
            cout << i << endl;
            found = true;
        }
    }
    
    if (!found) {
        cout << "None" << endl;
    }
    
    return 0;
}

该程序首先定义了一个函数isPrime,用于判断一个数是否为素数。然后,程序读取用户输入的n,并使用循环遍历2到2^n-1的所有数。对于每个数,程序调用isPrime函数来判断是否为素数,如果是素数,则输出该数。最后,如果没有找到梅森数,则输出"None"

5 梅森数c++形如 2 n −1 的素数称为梅森数Mersenne Number。例如 2 2 −1=3、2 3 −1=7 都是梅森数。1722 年双目失明的瑞士数学大师欧拉证明了 2 31 −1=2147483647 是一个素数堪称当时世界上已知最大素数的一个记录。本题要求编写程序对任一正整数 nn20输出所有不超过 2 n −1 的梅森数。 输入格式:输入在一行中给出正整数 nn20。 输出

原文地址: http://www.cveoy.top/t/topic/iJXi 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录