C++ 中的梅森素数。
描述
在数学中,梅森素数是小于 2 的幂次的素数。也就是说,它是形式为 Mn = 2n − 1 的素数,其中 n 是某个整数。
编写一个 C++ 程序来打印所有小于输入正整数 n 的梅森素数。
产生梅森素数的指数 n 有 2、3、5、7...,产生的梅森素数为 3、7、31、127
算法
1. Generate all the primes less than or equal to the given number n 2. Iterate through all numbers of the form 2n-1 and check if they are primes or not
示例
#include <iostream>
#include <algorithm>
using namespace std;
void generatePrimes(bool *primes, int n){
fill(primes, primes + n + 1, true);
for (int p = 2; p * p <= n; ++p) {
if (primes[p] == true) {
for (int i = p * 2; i <= n; i += p) {
primes[i] = false;
}
}
}
}
void mersennePrimes(int n){
bool primes[n + 1];
generatePrimes(primes, n);
for (int i = 2; ((1 << i) - 1) <= n; ++i) {
int num = (1 << i) - 1;
if (primes[num]) {
cout << num << " ";
}
}
cout << endl;
}
int main(){
int n = 100;
cout << "Mersenne primes numbers till " << n << endl;
mersennePrimes(n);
return 0;
}输出
当你编译并执行上述程序时,它将产生以下输出 -
Mersenne primes numbers till 100 3 7 31
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP