เราได้รับอาร์เรย์ของตัวเลข เป้าหมายคือการหาจำนวนเฉพาะในอาร์เรย์นั้น
จำนวนเฉพาะคือจำนวนที่หารด้วย 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) ตรวจสอบว่าจำนวนที่ส่งผ่านเป็นจำนวนเฉพาะหรือไม่ หากเป็นจำนวนเฉพาะ จะส่งกลับ 1 มิฉะนั้นจะคืนค่า 0
-
หาก num เป็น <=1 แสดงว่าไม่ใช่จำนวนเฉพาะ ให้คืนค่า 0
-
ตอนนี้เริ่มจาก 2 ถึง num/2 หากจำนวนใดหาร num ได้จนหมด ( num%i==0) แล้ว num จะเป็น non-prime ให้คืนค่า 0
-
ผลตอบแทนอื่น 1.
-
isprime ตัวแปรบอกว่าตัวเลขเป็นจำนวนเฉพาะหรือไม่ ( 1 หมายถึงจำนวนเฉพาะ )
-
จำนวนตัวแปรเก็บจำนวนเฉพาะใน arr[]
-
ภายในหลักสำรวจทั้งอาร์เรย์และส่งผ่านแต่ละองค์ประกอบ arr[i] เพื่อ checkPrime( arr[i] ) หากผลลัพธ์เป็น 1 ( isprime==1 ) ให้นับจำนวนที่เพิ่มขึ้น
-
เมื่อสิ้นสุดการนับคือจำนวนเฉพาะใน 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