Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 1에서 n 사이의 소수의 합을 찾는 프로그램

<시간/>

이 문제에서는 숫자 n이 주어집니다. 우리의 임무는 C++에서 1에서 n 사이의 소수의 합을 찾는 프로그램을 만드는 것입니다. .

소수는 인수가 두 개뿐인 숫자입니다. 숫자와 1입니다.

문제를 이해하기 위해 예를 들어보겠습니다.

입력

n = 15

출력

41

설명

1에서 15 사이의 소수는 2, 3, 5, 7, 11, 13입니다. 합은 41입니다.

솔루션 접근 방식

문제를 해결하는 간단한 방법은 루프를 사용하여 각 숫자가 소수인지 확인하고 소수인 모든 것을 더하는 것입니다.

숫자 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