赞
踩
找出素数的四种方法:
复杂度 | 主要区别 |
---|---|
1. 时间复杂度:O(n2) | divisor <= Math.sqrt(number) |
2. 时间复杂度:O(n√n) | divisor <= squareRoot,其中squareRoot2 <number |
3. 时间复杂度:O(n√n / logn) | for (int k=0; k<list.size() && list.get(k) <= squareRoot ;k++){…} |
4. 时间复杂度:O(n√n / logn) | for (int i=k; i<= n/k; i++){ //执行了 n/k-(k-1) primes[k * i] = false; |
public class PremeNumber { public static void main(String[] args) { final int NUMBER_OF_PRIMES = 50 ; final int NUMBER_OF_PRIMES_PRE_LINE = 10; int count = 0; int number = 2; System.out.println("The first 50 prime numbers are : "); while (count < NUMBER_OF_PRIMES){ boolean isPrime = true; for (int divisor = 2; divisor <= Math.sqrt(number); divisor++){ if (number % divisor == 0){ isPrime = false; break; } } if (isPrime){ count++; if (count % NUMBER_OF_PRIMES_PRE_LINE == 0){ System.out.println(number); } else System.out.print(number+" "); } number++; } } }
1. 主要区别:
int squareRoot = 0;
if (squareRoot * squareRoot < number) squareRoot++;
for (int divisor = 2; divisor <= squareRoot; divisor++){
2.完整代码:
public
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。