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
廣告