在 C++ 中打印出 N 以下的所有安全質數
本題給定一個整數 N,要求打印出所有值小於 N 的安全質數。
安全質數是指可以表示為 [(2*p)- 1] 的質數,其中 p 也是質數。
示例 − 5[(2*2) +1] , 7[(2*3)+1].
我們來舉幾個例子,以便更好地理解本題 −
Input: N = 12 Output: 5 7 11.
為解決本題,我們將找出所有小於 N 的質數(為此我們將使用埃拉託斯特尼篩法)。檢查質數是否為安全質數,如果是,則打印出來。
示例
#include <bits/stdc++.h>
using namespace std;
void printPrime(int n){
cout<<n<<"\t";
}
void generateSafePrimes(int n){
int prime[n + 1];
for (int i = 2; i <= n; i++)
prime[i] = 1;
prime[0] = prime[1] = 0;
for (int p = 2; p * p <= n; p++) {
if (prime[p] == 1) {
for (int i = p * 2; i <= n; i += p)
prime[i] = 0;
}
}
for (int i = 2; i <= n; i++) {
if (prime[i] != 0) {
int temp = (2 * i) + 1;
if (temp <= n && prime[temp] != 0)
prime[temp] = 2;
}
}
for (int i = 5; i <= n; i++)
if (prime[i] == 2)
printPrime(i);
}
// Driver code
int main(){
int n = 34;
cout<<"safe Prime numbers less than "<<n<<" are :\n";
generateSafePrimes(n);
return 0;
}輸出
小於 34 的安全質數有 −
5 7 11 23
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP