C++ 中 Pierpont 質數
本題中,我們給定了一個數 n。我們的任務是打印出所有小於 n 的皮爾龐特質數。
皮爾龐特質數是一種特殊型別的質數,形式為,
p= 2i . 3k + 1.
其中p是質數,i和k是某些整數。
我們舉個例子來理解一下這個問題,
輸入 − n = 50
輸出 − 2, 3, 5, 7, 13, 17, 19, 37
要解決這個問題,我們必須找出所有符合條件的質數。為此,我們將找到一個因數是 2 和 3 的冪的數。找出所有質數。並且打印出兩個數字,既是質數,又符合條件。
示例
一個程式來說明我們解決方案的實現,
#include <bits/stdc++.h>
using namespace std;
void printPierpontPrimes(int n){
bool arr[n+1];
memset(arr, false, sizeof arr);
int two = 1, three = 1;
while (two + 1 < n) {
arr[two] = true;
while (two * three + 1 < n) {
arr[three] = true;
arr[two * three] = true;
three *= 3;
}
three = 1;
two *= 2;
}
vector<int> primes;
for (int i = 0; i < n; i++)
if (arr[i])
primes.push_back(i + 1);
memset(arr, false, sizeof arr);
for (int p = 2; p * p < n; p++) {
if (arr[p] == false)
for (int i = p * 2; i< n; i += p)
arr[i] = true;
}
for (int i = 0; i < primes.size(); i++)
if (!arr[primes[i]])
cout<<primes[i]<<"\t";
}
int main(){
int n = 50;
cout<<"All Pierpont Prime Numbers less than "<<n<<" are :\n";
printPierpontPrimes(n);
return 0;
}輸出
All Pierpont Prime Numbers less than 50 are : 2 3 5 7 13 17 19 37
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
安卓
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP