求比任一数小的所有素数算法

   
package org.basic.test;import java.util.arraylist;import java.util.list;public class testprimer {	public static void main(string[] args) {		int scope = 5000000;		system.out.println("scope=" + scope);		testprimer tp = new testprimer();		long time1 = system.currenttimemillis();		list<integer> primers1 = tp.getprime1(scope);		long time2 = system.currenttimemillis();		list<integer> primers2 = tp.getprime2(scope);		long time3 = system.currenttimemillis();		system.out.println("算法一耗时:" + (time2 - time1) + " ms");		system.out.println(primers1.size());		//tp.print(primers1);		system.out.println("算法二耗时:" + (time3 - time2) + " ms");		system.out.println(primers2.size());		//tp.print(primers2);	}		public void print(list<integer> primers){		for(integer i : primers){			system.out.print(i + ", ");		}	}	public list<integer> getprime1(int number) {		list<integer> primes = new arraylist<integer>();		primes.add(2);		for (int i = 3; i <= number; i++) {			if (isprime1(primes, i)) {				primes.add(i);			}		}		return primes;	}	//只要i不能被比i小的所有素数整除i就是素数。	public boolean isprime1(list<integer> primes, int i) {		for (int prime : primes) {			if(prime * prime > i){				return true;			}			if (i % prime == 0) {				return false;			}		}		return true;	}	public list<integer> getprime2(int number) {		list<integer> primes = new arraylist<integer>();		primes.add(2);		for (int i = 3; i <= number; i++) {			if (isprime2(i)) {				primes.add(i);			}		}		return primes;	}		public boolean isprime2(int i) {		for (int j = 2; j < math.sqrt(i) + 1; j++) {			if (i % j == 0) {				return false;			}		}		return true;	}  }scope=5000000算法一耗时:2953 ms348513算法二耗时:7031 ms348513
  

你可能感兴趣的:(java,工作)