เราได้รับอาร์เรย์ของตัวเลข เป้าหมายคือการหาจำนวนเฉพาะในอาร์เรย์นั้น
จำนวนเฉพาะคือจำนวนที่หารด้วย 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