用 C++ 列印所有小於等於 N 的素數


在這個問題中,我們給定一個數字 N,需要列印所有小於等於 N 的素數。

讓我們來看一個例子,以便更好地理解這個主題:

Input: 10
Output: 2 3 5 7

**素數**是一個只能被 1 和其自身整除的數字。例如: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

更新於:2020年1月17日

953 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告