C++で合計Sを持つ素数Pの後の素数
この問題では、合計S、素数P、およびNの3つの数が与えられます。私たちのタスクは、合計がSに等しいPより大きいN個の素数をすべて見つけることです。
私たちの問題を理解するために例を見てみましょう
Input: N = 2, P = 5, S = 18 Output: 7 11 Explanation: Prime numbers greater than 5 : 7 11 13 Sum = 7 + 11 = 18
この問題を解決するには、PとSの間のすべての素数を見つける必要があります。次に、合計がSになるN個の素数を見つけます。このためにバックトラッキングを使用します。
ソリューションの実装を示すプログラム
例
#include <iostream> #include <vector> #include <cmath> using namespace std; vector<int> set; vector<int> primeNo; bool isPrimeNumber(int x) { int sqroot = sqrt(x); bool flag = true; if (x == 1) return false; for (int i = 2; i <= sqroot; i++) if (x % i == 0) return false; return true; } void printPrimes() { int length = set.size(); for (int i=0; i<length; i++) cout<<set[i]<<"\t"; cout<<endl; } void GeneratePrimeSum(int total, int N, int S, int index) { if (total == S && set.size() == N) { printPrimes(); return; } if (total > S || index == primeNo.size()) return; set.push_back(primeNo[index]); GeneratePrimeSum(total+primeNo[index], N, S, index+1); set.pop_back(); GeneratePrimeSum(total, N, S, index+1); } void PrimesWithSum(int N, int S, int P) { for (int i = P+1; i <=S ; i++) { if (isPrimeNumber(i)) primeNo.push_back(i); } if (primeNo.size() < N) return; GeneratePrimeSum(0, N, S, 0); } int main() { int S = 23, N = 3, P = 3; cout<<N<<" Prime numbers greater than "<<P<<" with sum = "<<S<<" are :\n"; PrimesWithSum(N, S, P); return 0; }
出力
3 Prime numbers greater than 3 with sum = 23 are : 5 7 11
-
C++の配列内のすべての素数の積
いくつかの要素を持つ整数配列arr[]が与えられた場合、タスクはその数のすべての素数の積を見つけることです。 素数は、1で割った数、またはその数自体です。または、素数は、1とその数自体を除いて他の数で割り切れない数です。 1、2、3、5、7、11など 与えられた配列の解を見つける必要があります- 入力 −arr [] ={11、20、31、4、5、6、70} 出力 − 1705 説明 −配列の素数は− 11、31、5であり、それらの積は1705 入力 − arr [] ={1、2、3、4、5、6、7} 出力 − 210 説明 −配列の素数は− 1、2、3、5、7
-
C++でのK否定後の配列合計を最大化する
問題の説明 サイズnと数kの配列が与えられます。配列をk回変更する必要があります。 配列の変更とは、各操作で、配列要素arr [i]を否定することで置き換えることができることを意味します。つまり、arr [i] =-arr[i]です。タスクは、k回の操作の後、配列の合計が最大になるようにこの操作を実行することです。 input arr [] ={7、-3、5、4、-1}の場合、最大合計は20になります。 最初に-3を否定します。これで、配列は{7、3、5、4、-1}になります 負の-1。これで、配列は{7、3、5、4、1}になります アルゴリズム 1. Replace the min