使用 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 作為輸入,並返回可以表示為相同奇偶性素數之和的元素的數量。

  • 將初始變數 count 初始化為 0,用於表示此類數字。

  • 使用 for 迴圈遍歷陣列。

  • 對於每個元素,如果它是偶數 ( arr[i]%2==0 )。

  • 然後檢查它是否既不是 0 也不是 2。如果是,則遞增 count。

  • 在 for 迴圈結束時返回 count 作為結果。

示例

 即時演示

#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

更新於: 2020-10-31

126 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告