เราได้รับตัวแปรช่วง 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