在C++中查詢小於或等於給定數字的最大特殊素數
假設我們有一個數字n。我們必須找到小於或等於N的最大特殊素數。特殊素數是一個數字,可以透過將數字一個接一個地放置來建立,因此所有生成的數字都是素數。
在這裡,我們將使用埃拉托色尼篩法。我們將建立一個高達數字n的篩陣列。然後從數字N迭代地向後開始,檢查數字是否為素數。當它是素數時,檢查它是否是特殊素數。
示例
#include<iostream>
using namespace std;
bool isSpecialPrime(bool sieve[], int num) {
while (num) {
if (!sieve[num]) {
return false;
}
num /= 10;
}
return true;
}
void findSpecialPrime(int N) {
bool sieve[N + 10];
for(int i = 0; i<N+10; i++){
sieve[i] = true;
}
sieve[0] = sieve[1] = false;
for (long long i = 2; i <= N; i++) {
if (sieve[i]) {
for (long long j = i * i; j <= N; j += i) {
sieve[j] = false;
}
}
}
while (true) {
if (isSpecialPrime(sieve, N)) {
cout << N << '\n';
break;
}
else
N--;
}
}
int main() {
cout << "Special prime in range (2 -> 400): ";
findSpecialPrime(400);
cout << "Special prime in range (2 -> 100): ";
findSpecialPrime(100);
}輸出
Special prime in range (2 -> 400): 379 Special prime in range (2 -> 100): 79
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP