1. 程式人生 > >【演算法】判斷小於n的正整數中有幾個質數

【演算法】判斷小於n的正整數中有幾個質數

這個演算法比較簡單,關鍵在於你怎麼判斷一個正整數是不是質數。這裡用的方法是,用小於它的正整數去除它,如果餘數有0出現,那說明它是質數,反之,它不是質數。

關鍵在於,你這個小於它的整數取到哪裡,其實取到它的平方根,就足以說明問題了。

#include <iostream>

using namespace std;

class Solution {
public:
    
    int countPrimes(int n) {
    int count=0;
    int i=0;
    int t=0;
        if (n==0 || n==1)
            count=0;
        else
        {
            for(i=2; i<n; i++)
            {
                 for (t=2; t*t<=i;t++)              //從這裡開始判斷,這個數也就是 i,是不是質數
{
                         if (i%t==0)                         //讓i開始除t,判斷餘數是否為0;t的取值是從2一直到小於等於i的平方根
       break;                //如果餘數有0的出現,那i就不是質數,直接跳出for迴圈
}
if (t*t>i)                     //如果t的平方都大於i了,還沒出現餘數為0,那就說明i是個質數

                        count+=1;                          //這種情況,我們讓count加1
                        cout<<i<<"is a prime"<<endl;
}
              }
 }
        return count;
    }
};

int main()
{
    Solution test;
    cout << test.countPrimes(18);
   return 0;
}