เราได้รับตัวแปรช่วง START และ END เป้าหมายคือการหาจำนวนเฉพาะในช่วง [START,END]
เราจะตรวจสอบว่าจำนวน i ที่อยู่ในช่วงเป็นจำนวนเฉพาะหรือไม่ โดยตรวจสอบว่าจำนวนใดๆ ที่ไม่ใช่ 1 หารลงตัวหรือไม่ และอยู่ระหว่าง 1 ถึง i/2 ถ้าเป็นไพรม์. จำนวนที่เพิ่มขึ้น
มาทำความเข้าใจกับตัวอย่างกัน
ป้อนข้อมูล
Start=1 End=20
ผลผลิต
Primes in Ranges : 8
คำอธิบาย
Primes between 1 and 20 are: 2,3,5,7,11,13,17,19.
ป้อนข้อมูล
Start=100 End=200
ผลผลิต
Primes in Ranges : 21
คำอธิบาย
Primes between 100 and 200 are: 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
-
เราใช้ตัวแปรช่วงเป็น START และ END
-
ฟังก์ชัน countPrimes(int strt,int end) คืนค่าจำนวนเฉพาะในช่วง
-
นับตัวแปรเริ่มต้นเป็น 0
-
สำรวจโดยใช้ for loop จาก i=strt ถึง i <=end
-
นำแต่ละตัวเลข i และตรวจสอบว่าเป็นจำนวนเฉพาะโดยใช้ isprime(i)
-
ฟังก์ชัน isprime(int num) คืนค่า 0 หากตัวเลขไม่ใช่จำนวนเฉพาะ และ 1 หากเป็นจำนวนเฉพาะ
-
หลังจากสิ้นสุดลูป ให้นับกลับเป็นผลลัพธ์
ตัวอย่าง
#include <bits/stdc++.h>
using namespace std;
int isprime(int num){
if (num <= 1)
return 0;
for (int i = 2; i <= num/2; i++){
if (num % i == 0)
{ return 0; }
}
return 1; //if both failed then num is prime
}
int countPrimes(int strt,int end){
int count=0;
for(int i=strt;i<=end;i++){
if(isprime(i)==1)
{ count++; }
}
return count;
}
int main(){
int START=10, END=20;
cout <<endl<<"Primes in Ranges : "<<countPrimes(START,END);
return 0;
} ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -
Primes in Ranges : 4