C ++では、合計が素数でn未満のペアをカウントします
入力として正の数nが与えられます。目標は、各ペアが素数でn未満の合計(i + j)を持つように、可能なペア(i、j)の数を見つけることです。また、i!=jおよびi、j> =1 nが4の場合、(1,2)である1つのペアのみが可能です。ここで、1 + 2 =3は素数であり、4未満です。また、1,2>=1です。
例を挙げて理解しましょう。
入力 − n =7
出力 −合計を素数とし、n未満のペアの数は− 3
説明 −ペアは(1,2)、(1,4)、(2,3)になります。合計3、5、5は素数で、7未満です。
入力 − n =10
出力 −合計を素数とし、n未満のペアの数は− 6
説明 −
ペアは(1,2)、(1,4)、(2,3)、(1,6)、(2,5)、(3,4)になります。
合計3、5、5、7、7、7は素数で、10未満です。
以下のプログラムで使用されているアプローチは次のとおりです
このアプローチでは、最初に関数check_prime(bool check []、int temp)でSieve of Sundaramを使用して、n未満のすべての素数を見つけます。
また、奇数のtempごとに、合計tempを持つ個別のペアの数はtemp/2になります。
2を除いて、すべての素数は奇数であるため、n未満の素数が見つかった場合は、ペアの数にtemp/2を追加します。
-
変数nを入力として受け取ります。
-
関数prime_pair(int n)はnを取り、合計が素数でn未満のペアの数を返します。
-
初期カウントを0とします。
-
サンダラムのふるいは、入力nに対して2 * n+2未満の素数を生成します。 nを半分に減らし、temp_2に格納します。
-
長さtemp_2の配列Check[]を作成して、フォームのすべての数値(i + j + 2 * i * j)をTrueとしてマークします。すべての要素をfalseとして初期化します。
-
関数check_prime(bool check []、int temp)を使用して、形式の数値(i + j + 2 * i * j)に対してcheck[]をtrueで初期化します。そして、この合計
-
次に、forループを使用してCheck[]をインデックスi=0からi
-
各check[i]がfalseの場合、素数はtemp =2 * i+1になります。
-
合計してtempになるペアはtemp/2になります。
-
カウントするためにtemp/2を追加します。
-
forループの最後に、合計が素数でn未満の合計ペアがあります。
-
結果としてカウントを返します。
例
#include <bits/stdc++.h>
using namespace std;
void check_prime(bool check[], int temp){
for (int i=1; i<=temp; i++){
for (int j=i; (i + j + 2*i*j) <= temp; j++){
check[i + j + 2*i*j] = true;
}
}
}
int prime_pair(int n){
int count = 0;
int temp;
int temp_2 = (n-2)/2;
bool check[temp_2 + 1];
memset(check, false, sizeof(check));
check_prime(check, temp_2);
for (int i=1; i <= temp_2; i++){
if (check[i] == false){
temp = 2*i + 1;
count += (temp / 2);
}
}
return count;
}
int main(){
int n = 10;
cout<<"Count of pairs with sum as a prime number and less than n are: " <<prime_pair(n);
return 0;
} 出力
上記のコードを実行すると、次の出力が生成されます-
Count of pairs with sum as a prime number and less than n are: 6
-
C++でそれより少ない数のすべての四つ子素数を印刷します
この問題では、正の整数Nが与えられ、n以下のすべてのプライム4つ組を出力する必要があります。 四つ子素数 {p、p +2として計算される4つの素数のセットです。 、p +6 、p +8 }。 例 − 5 7 11 13. 問題を理解するために例を見てみましょう- Input: N = 15 Output: 5 7 11 13. この問題を解決するための簡単なアプローチは、素数pのすべての4つ組を生成し、すべてのp、p +2かどうかを確認することです。 、p +6 、p +8 素数です。このソリューションは簡単ですが、コンパイラにとってはより複雑です。 もう1つの効
-
C++でのY未満の数のセットの最小数
問題の説明 連続する数字の文字列と数字のYが与えられた場合、タスクは、すべてのセットが以下のルールに従うように最小セットの数を見つけることです- セットには連続した数字が含まれている必要があります 数字を複数回使用することはできません。 セット内の数はYを超えてはなりません。 例 str =“ 1234”およびY =20の場合、以下のセットが作成されるため、答えは3です- {12}{3}および{4} アルゴリズム 文字列を数値に変換 数値がY以下の場合は、f=1とマークします 数値がYを超える場合は、f =1の場合はカウントを増やし、fを0として再初期化し、numをs [i]-‘0