思路:先去掉2的倍数,再去掉3的倍数,再去掉5的倍数,……依此类推,最后剩下的就是素数。
质数(又称素数),是指在大于1的自bai然数中,除了1和它本身外,不能被其他自然数整除(除0以外)的数称之为质数。
/**
* 求n以内的所有素数
* @param n 范围
* @return n以内的素数
*/
private static List<Integer> getPrimes(int n)
{
List<Integer> result = new ArrayList() ;
result.add(2);
for(int i=3;i<=n;i+=2)
{
if(!divisible(i,result))
{
result.add(i);
}
}
return result;
}
private static boolean divisible(int n, List<Integer> primes) {
for(Integer prime : primes)
{
if(n % prime == 0)
{
return true; //整除,则返回真
}
if(prime >= Math.sqrt(n) ) //如果超过平方根还没有整除,则退出循环
break;
}
return false;
}