public class Solution {
public int countPrimes(int n) {
int c=0;
if(n<=1)
return c;
else{
for(int j=2;j<=n;j++)
{
int v=0;
for(int i=2;i<=Math.sqrt(n);i++)
{
if(j%i==0)
{
v=1;
break;
}
}
if(v==0)
c++;
}
return c;
}
}
}
提交算法后显示
Status: Time Limit Exceeded | |
Submitted: 0 minutes ago |
Last executed input: | 1500000 |
修改
1. 计算小于n的质数个数,除了2之外,所有的偶数都不是质数,因此只判断所有的奇数
2. 对于某个奇数k,判断其是否为质数,只考虑k是否被2~sqrt(k)中的值整除
3. 因为本身是奇数,因此只判断是否被2~sqrt(k)中的奇数整除
public class Solution {
public int countPrimes(int n) {
int c=0;
if(n<=2)
return c;
if(n==3)
return ++c;
else{
c++;
for(int j=3;j<n;j=j+2)
{
int v=0;
for(int i=3;i<=Math.sqrt(j);i=i+2)
{
if(j%i==0)
{
v=1;
break;
}
}
if(v==0)
c++;
}
return c;
}
}
}