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
廣告
資料結構
網路
關係資料庫管理系統(RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP