这道题我觉得难点就是在到底咋用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; } }