204. Count Primes
主要是判断整数是否为质数,判断有如下三种,效率依次提高
bool isPrimes(int n)
{
bool bIsPrimes = true;
for (int i = 2; i <= n; i++)
{
if (n % i == 0)
{
bIsPrimes = false;
break;
}
}
return bIsPrimes;
}
- i <= m
- i <= m/2
- i * i <=m
解释一下 i * i <= m
假设x的平方 = m,a * b = m(a < b)
那么就有a < x,b > x
我们只要确定 2–x这个区间,余数为0,就可以断定是质数
完整代码如下:
class CountPrimes {
public:
int countPrimes(int n) {
if (n < 2)
{
return 0;
}
int count = 0;
for (int i = 2; i <= n; i++)
{
if (isPrimes(i))
{
cout<<i<<endl;
count++;
}
}
return count;
}
bool isPrimes(int n)
{
bool bIsPrimes = true;
for (int i = 2; i * i <= n; i++)
{
if (n % i == 0)
{
bIsPrimes = false;
break;
}
}
return bIsPrimes;
}
};