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。 输出
以下是使用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"
原文地址: http://www.cveoy.top/t/topic/iJXi 著作权归作者所有。请勿转载和采集!