Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

นับจำนวนเฉพาะในช่วงใน C++


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