C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++で1からnまでの素数の合計を見つけるプログラム


この問題では、数nが与えられます。私たちのタスクは、C++で1からnまでの素数の合計を見つけるプログラムを作成することです

素数は、2つの要素しかない数です。それらは数と1です。

問題を理解するために例を見てみましょう

入力

n = 15

出力

41

説明

1から15までの素数は2、3、5、7、11、13です。sumis41。

ソリューションアプローチ

この問題を解決する簡単な方法は、ループを使用して、各数値が素数であるかどうかを確認し、素数であるすべての数値を追加することです。

数iが素数であるかどうかを確認します。 iからi/2にループします。 iを分割できる数があるかどうかを確認します。はいの場合、その番号は素数ではありません。

ソリューションの動作を説明するプログラム

#include <iostream>
using namespace std;
bool isPrime(int n){
   for(int i = 2; i < n/2; i++){
      if(n%i == 0){
         return false;
      }
   }
   return true;
}
int findPrimeSum(int n){
   int sumVal = 0;
   for(float i = 2; i <= n; i++){
      if(isPrime(i))
         sumVal += i;
   }
   return sumVal;
}
int main(){
   int n = 15;
   cout<<"The sum of prime number between 1 to "<<n<<" is "<<findPrimeSum(n);
   return 0;
}

出力

The sum of prime number between 1 to 15 is 45

効果的な解決策は、エラトステネスのふるいを使用して素数を見つけ、それらを加算して必要な合計を見つけることです。

ソリューションの動作を説明するプログラム

#include <iostream>
using namespace std;
int findPrimeSum(int n){
   int arr[n+1] = {0};
   for (int i = 2; i < n; i++) {
      for (int j = i * i; j < n; j+=i) {
         arr[j - 1] = 1;
      }
   }
   int sumVal;
   for (int i = 2; i < n; i++) {
      if (arr[i - 1] == 0)
         sumVal += i;
   }
   return sumVal;
}
int main(){
   int n = 15;
   cout<<"The sum of prime number between 1 to "<<n<<" is "<<findPrimeSum(n);
   return 0;
}

出力

The sum of prime number between 1 to 15 is 41

  1. 数値が2つの素数の合計として表現できるかどうかをチェックするC++プログラム

    以下は、数値が2つの素数の合計として表現できるかどうかを確認する例です。 例 #include <iostream> using namespace std; int func(int num) {    int i;    int flag = 1;    for(i = 2; i <= num/2; ++i) {       if(num % i == 0) {          flag = 0;     &nb

  2. 再帰を使用して自然数の合計を見つけるC++プログラム

    自然数は1から始まる正の整数です。 自然数のシーケンスは-です 1, 2, 3, 4, 5, 6, 7, 8, 9, 10…… 再帰を使用して最初のn個の自然数の合計を見つけるプログラムは次のとおりです。 例 #include <iostream> using namespace std; int sum(int n) {    if(n == 0)    return n;    else    return n + sum(n-1); } int main() { &