C++で次に小さいプライムパリンドローム
数Nが与えられます。Nより大きい素数回文を見つける必要があります。例を見てみましょう。
入力
N = 10
出力
11
アルゴリズム
-
番号Nを初期化します。
-
指定された数が素数であるかどうかをチェックする関数を記述します。
-
指定された数が回文であるかどうかを確認する関数を記述します。
-
N + 1から繰り返すループを作成します 次の回文素数が見つかるまで。
- 数が素数と回文素数であるかどうかを確認します。
- 数が素数で回文素数の場合。
- 番号を返します。
実装
以下は、C++での上記のアルゴリズムの実装です
#include<bits/stdc++.h>
using namespace std;
bool isPrime(int n) {
if (n < 2) return false;
for (int i = 2; i <= sqrt(n); i++) {
if (n % i == 0) return false;
}
return true;
}
bool isPalindrome(int n) {
int num, digit, rev = 0;
n = num;
while (num) {
digit = num % 10;
rev = (rev * 10) + digit;
num = num / 10;
}
return n == rev ? true : false;
}
int getNextSmallestPrimePalindrome(int n) {
int i = n + 1;
while (true) {
if (isPrime(i) && isPalindrome(i)) {
return i;
}
i += 1;
}
}
int main() {
int N = 15;
cout << getNextSmallestPrimePalindrome(N) << endl;
return 0;
} 出力
上記のコードを実行すると、次の結果が得られます。
17
-
C++のプライムトリプレット
この問題では、数Nが与えられます。私たちのタスクは、N未満のすべての素数三つ子素数を印刷することです。 三つ子素数 3つの素数のセットです。これは、(p、p + 2、p + 6)または(p、p + 4、p + 6)の形式です。直接パターンの3つおきの素数は6の倍数であるため、すべての素数は上記のトリプレットに従ってグループ化されます。 問題を理解するための例を見てみましょう Input: N = 13 Output: 5 7 11 この問題を解決するには、N以下のすべての素数を見つける必要があります。そしてトリプレットをチェックします。 ソリューションの実装を示すコード 例 #incl
-
C++の平衡素数
平衡素数 numberは、前の素数と次の素数で同じ差がある素数です。つまり、最も近い次の素数と前の素数の平均です。 素数が平衡素数になるには、次の式に従う必要があります- P n =(P(n-1)+ P(n + 1))/ 2 ここで、nは、順序付けられた素数のセット内の素数pnのインデックスです。 素数の順序集合:2、3、5、7、11、13、…。 まず、平衡素数は5、53、157、173、… この問題では、数nが与えられ、n番目の平衡素数を見つける必要があります。 例を見てみましょう Input : n = 3 Output : 157 このため、素数を生成し、配列に