【演算法】判斷小於n的正整數中有幾個質數
阿新 • • 發佈:2019-01-01
這個演算法比較簡單,關鍵在於你怎麼判斷一個正整數是不是質數。這裡用的方法是,用小於它的正整數去除它,如果餘數有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;
}