[LeetCode] Count Primes
这道题我觉得难点就是在到底咋用java判断一个数是不是质数这个点上。
说实话这个我实在没啥点,我这个办法也是直接死背下来的,所以我也不会说原理。
关于isPrime()method里面那个for loop为啥step是2是因为我的loopcong3开始,3,5,7,9……这样是略过了所有偶数,所有偶数除了2,都不可能是prime的。(偶数判断也已经单独写了if statament。)所以简化过程,直接在奇数里面判断。
代码如下。~
public class Solution {
public int countPrimes(int n) {
if(n<=2){
return 0;
}
int count=1; //at least 2 is a prime
for (int i=3;i<n;i++){
if(isPrime(i)==true){
count++;
}
}
return count;
}
public boolean isPrime(int n){
if(n%2==0){
return false;
}
for(int i=3;i*i<=n;i=i+2){
if(n%i==0){
return false;
}
}
return true;
}
}
浙公网安备 33010602011771号