이 문제에서는 숫자 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