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

พิมพ์จำนวนเฉพาะทั้งหมดที่น้อยกว่าหรือเท่ากับ N ใน C++


ในปัญหานี้ เราได้ตัวเลข N และต้องพิมพ์จำนวนเฉพาะทั้งหมดที่น้อยกว่าหรือเท่ากับ N

มาดูตัวอย่างเพื่อทำความเข้าใจหัวข้อกันดีกว่า −

Input: 10
Output: 2 3 5 7

จำนวนเฉพาะ เป็นตัวเลขที่สามารถหารด้วยตัวเดียวเท่านั้นและตัวนับเอง ตัวอย่าง:2, 3

วิธีง่ายๆ คือการวนซ้ำจาก 2 ถึง N แล้วหารจำนวนด้วยมัน ถ้าจำนวนนั้นหารไม่ได้ แสดงว่าเป็นจำนวนเฉพาะ พิมพ์หมายเลข ทำจนจำนวนเท่ากับ N วิธีการนี้ไม่ได้ผล

วิธีที่มีประสิทธิภาพมากขึ้นคือการตรวจสอบจำนวนเฉพาะโดยการวนซ้ำจาก 2 ถึง √N

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;
bool isPrimeNumber(int n){
   if (n <= 1)
      return false;
   if (n <= 3)
      return true;
   if (n % 2 == 0 || n % 3 == 0)
      return false;
   for (int i = 5; i * i <= n; i = i + 6)
      if (n % i == 0 || n % (i + 2) == 0)
         return false;
   return true;
}
void printPrime(int n){
   for (int i = 2; i <= n; i++) {
      if (isPrimeNumber(i))
         cout<<i<<" ";
      }
   }
int main(){
   int n = 41;
   cout<<"Prime numbers less than or equal to "<<n<<" are \n";
   printPrime(n);
}

ผลลัพธ์

จำนวนเฉพาะที่น้อยกว่าหรือเท่ากับ 41 คือ

2 3 5 7 11 13 17 19 23 29 31 37 41