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

C++에서 동일한 패리티 소수의 합으로 나타낼 수 있는 숫자 개수

<시간/>

크기가 N인 양의 정수 배열 Arr[]이 제공됩니다. 목표는 해당 배열에서 패리티 소수의 합으로 나타낼 수 있는 요소의 수를 계산하는 것입니다. 즉, 동일한 소수의 합으로 표시될 수 있습니다. 숫자. 전; 4=2+2, 6=3+3 또는 2+2+2

두 개의 홀수 또는 짝수 소수의 합은 항상 짝수입니다. 그리고 0과 2를 제외하고 모든 짝수는 같은 소수의 합으로 나타낼 수 있습니다.

예를 들어 이해합시다.

입력

Arr[] = { 2, 5, 10, 15, 20, 25 }

출력

Number which satisfy condition : 3

설명

Numbers as sum of same primes:
Arr[0] = 2 X count=0
Arr[1] = 5 : X count=0
Arr[2] = 10 :5+5 count=1
Arr[3] = 15 : X count=1
Arr[4] = 20 : 5+5+5+5 count=2
Arr[5] = 25 : X count=2

입력

Arr[] = { 0, 2, 4, 11, 13}

출력

Number which satisfy condition : 1

설명

Numbers as sum of same primes:
Arr[0] = 0 : X count=0
Arr[1] = 2 : X count=0
Arr[2] = 4 : 2+2 count=1
Arr[3] = 11 : X count=1
Arr[4] = 13 : X count=1

아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.

  • 길이가 N인 양의 정수 배열을 사용합니다.

  • 함수 sumofparityPrimes(int arr[],int n)은 배열과 n을 입력으로 받아 패리티 소수의 합으로 나타낼 수 있는 요소 수를 반환합니다.

  • 이러한 숫자에 대해 초기 변수 개수를 0으로 간주합니다.

  • for 루프를 사용하여 배열을 탐색합니다.

  • 짝수인 경우 각 요소에 대해( arr[i]%2==0 ).

  • 그런 다음 0도 2도 아닌지 확인합니다. true이면 카운트를 증가시킵니다.

  • for 루프의 끝에서 카운트를 결과로 반환합니다.

#include <bits/stdc++.h>
using namespace std;
int sumofparityPrimes(int arr[],int n){
   int count = 0;
   for(int i=0;i<n;i++){
      if(arr[i]%2==0) //num is even only{
         if(arr[i]!=0){
            if(arr[i]!=2)
               { count++; } //neither 0 nor 2
         }
      }
   }
   return count;
}
int main(){
   int Arr[]={ 12, 5 , 15, 8, 100, 40 };
   int Length= sizeof(Arr)/sizeof(Arr[0]);
   cout <<endl<< "Number which satisfy condition : "<<sumofparityPrimes(Arr,Length);
   return 0;
}

출력

위의 코드를 실행하면 다음과 같은 출력이 생성됩니다 -

Number which satisfy condition : 4