计算素数优化_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 计算素数优化

计算素数优化

 2011/9/19 21:00:00  tombigun  http://tombigun.iteye.com  我要评论(0)
  • 摘要:列出小于1000的素数,对于这样的算法好多人都会,但对于编程人员,要对这样的算法做优化,会有不同的算法了,以下为我自己的两种算法做比较:算法一,大众算法。用两个循环法。publicclassTest{publicstaticvoidmain(String[]args){longstart=System.currentTimeMillis();for(inti=2;i<100000;i++){if(prime(i))System.out.println(i);}System.out
  • 标签:优化

列出小于1000的素数,对于这样的算法好多人都会,但对于编程人员,要对这样的算法做优化,会有不同的算法了,以下为我自己的两种算法做比较:

?

算法一,大众算法。用两个循环法。

public class Test {

	public static void main(String[] args) {
		
		long start = System.currentTimeMillis();
		
		for (int i = 2; i < 100000; i++) {
			if(prime(i))
				System.out.println(i);
		}

		
		System.out.println("take times : " + (System.currentTimeMillis() - start));
	}
	
	private static boolean prime(int n){
		
		for (int i = 2; i < n; i++) {
			if(n % i == 0)
				return false;
		}
		
		return true;
	}

}

?

算法二,优化后的算法

public class Test2 {

	public static void main(String[] args) {
		
		long start = System.currentTimeMillis();
		
		for (int i = 2; i < 100000; i++) {
			if(prime(i))
				System.out.println(i);
		}

		
		System.out.println("take times : " + (System.currentTimeMillis() - start));
	}
	
	private static boolean prime(int n){
		
		if(n % 2 == 0)
			return n == 2;
		
		for (int i = 3; i*i <= n; i = i + 2) {
			if(n % i == 0)
				return false;
		}
		
		return true;
	}


}

?

以上两个算法比较(数据量越大结果对比越明显):

elipse下运行计算 算法一耗时(ms) 算法二耗时(ms) 小于1000 7 5 小于100000 4590 237
发表评论
用户名: 匿名