C 程式設計中的超級素數
超級素數是一種在所有素數序列中佔據素數位置的數。也被稱為高階素數,這些數在素數序列中佔據的位置等於素數。一些超級素數有 3、5、11、17…
例如,讓我們找出小於 13 的所有超級素數 -
輸入
13
輸出
3, 5, 11.
說明 − 要找到小於 13 的超級素數,我們將找出所有小於 13 的素數。因此,顯示所有小於 13 的素數為 2、3、5、7、11、13。現在,2 是一個素數,因此我們將把位置 s 的素數視為超級素數。這意味著三是一個素數。類似地,位於位置 3 的 5 和位於位置 5 的 11 是超級素數。
要找出所有小於給定素數的所有超級素數,首先將找出所有小於該數的素數,然後將它們儲存在陣列中。從這個陣列中,我們將僅列印那些其位置等於任何素數的數。例如,位置為第 2 個、第 3 個、第 5 個、第 7 個、第 11 個、第 13 個等的素數被考慮在內。
示例
#include<iostream>
using namespace std;
bool SieveOfEratosthenes(int n, bool isPrime[]) {
isPrime[0] = isPrime[1] = false;
for (int i=2; i<=n; i++)
isPrime[i] = true;
for (int p=2; p*p<=n; p++) {
if (isPrime[p] == true) {
for (int i=p*2; i<=n; i += p)
isPrime[i] = false;
}
}
}
void superPrimes(int n) {
bool isPrime[n+1];
SieveOfEratosthenes(n, isPrime);
int primes[n+1], j = 0;
for (int p=2; p<=n; p++)
if (isPrime[p])
primes[j++] = p;
for (int k=0; k<j; k++)
if (isPrime[k+1])
cout << primes[k] << " ";
}
int main() {
int n = 343;
cout << "Super-Primes less than "<< n << " are :"<<endl;
superPrimes(n);
return 0;
}輸出
Super-Primes less than 343 are : 3 5 11 17 31 41 59 67 83 109 127 157 179 191 211 241 277 283 331
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP