C++中陣列質數計數


給定一個數字陣列。目標是找到該陣列中質數的數量。

質數只能被1和它本身整除。它只有兩個因數。我們將從第一個元素到最後一個元素檢查數字是否為質數,並增加到目前為止找到的質數的計數。

要檢查數字N是否為質數,請檢查[2到N/2]範圍內的數字是否完全整除N。如果是,則它是非質數。否則它是質數。

讓我們透過示例來理解。

輸入 − arr[]= { 1,2,3,4,5,6,7,8,9 }

輸出 − 質數數量 − 4

解釋 − 這裡2,3,5,7是質數,1,4,6,8,9是非質數。

輸入 − arr[]= { 11,12,4,61,23 }

輸出 − 質數數量 − 3

解釋 − 這裡11,61,23是質數,12,4是非質數。

下面程式中使用的方案如下

  • 我們取一個包含隨機數字的整數陣列arr[]。

  • 函式checkPrime(int num) 檢查傳入的數字num是否為質數。如果是質數,則返回1;否則返回0。

  • 如果num <=1,則它是非質數,返回0。

  • 現在從2到num/2開始,如果任何數字完全整除num (num%i==0),則num是非質數,返回0。

  • 否則返回1。

  • 變數isprime表示數字是否為質數(1表示質數)

  • 變數count儲存arr[]中質數的數量

  • 在main內部遍歷整個陣列並將每個元素arr[i]傳遞給checkPrime(arr[i]),如果結果為1 (isprime==1),則遞增count。

  • 最後count是arr[]中質數的數量

示例

 線上演示

#include <bits/stdc++.h>
using namespace std;
// Function to find if number is prime
int checkPrime(int num){
    if (num <= 1)
      { return 0; }
   // Check from 2 to half of arr[i]
   for (int j = 2; j <= num/2; j++){
      if (num % j == 0){
         return 0;
      }
      return 1;
   }
}
int main(){
   int arr[] = { 1,3,5,4,8,13,11 };
   int n = 7;
   int count=0;
   int isprime=0;
   for(int i=0;i<n;i++){
      isprime=checkPrime(arr[i]);
      if(isprime==1)
         count++;
   }
   cout<<"Count of number of primes in array : "<<count;
   return 0;
}

輸出

如果我們執行上面的程式碼,它將生成以下輸出:

Count of number of primes in array : 4

更新於:2020年8月29日

10K+ 瀏覽量

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告