快速找质数
来源:互联网 发布:佐藤谦一 知乎 编辑:程序博客网 时间:2024/06/10 02:07
给定1-1000000的数,快速找出质数
/* * 文件名:FindPrime .java * 版权:Copyright 2007-2017 517na Tech. Co. Ltd. All Rights Reserved. * 描述: FindPrime .java * 修改人:peiyu * 修改时间:2017年5月5日 * 修改内容:新增 */package com.websocket.controler;import java.util.ArrayList;import java.util.List;public class FindPrime { public static void main(String[] args) { findPrime1(10000000); findPrime2(10000000); findPrime3(10000000); } public static void findPrime1(int n) { double start = System.currentTimeMillis(); List<Integer> primeArray = new ArrayList<Integer>(); primeArray.add(2); primeArray.add(3); int k = 0; for (int j = 5; j < n;) { for (int i = 0; i < primeArray.size(); i++) { if (primeArray.get(i) * primeArray.get(i) > j) { primeArray.add(j); break; } else if (j % primeArray.get(i) == 0) { break; } } if (k % 2 == 0) { j += 2; } else { j += 4; } k++; } System.out.println(primeArray.size()); System.out.println("程序运行时间为" + (System.currentTimeMillis() - start)); } public static List<Integer> findPrime2(int n) { double start = System.currentTimeMillis(); List<Integer> primes = new ArrayList<Integer>(); primes.add(2); for (int i = 3; i <= n; i += 2) { int tmp = (int) Math.sqrt(i) + 1; for (int j = 2; j <= tmp; j++) { if (i % j == 0) break; if (j == tmp) primes.add(i); } } System.out.println(primes.size()); System.out.println("程序运行时间为" + (System.currentTimeMillis() - start)); return primes; } public static List<Integer> findPrime3(int n) { double start = System.currentTimeMillis(); List<Integer> primes = new ArrayList<Integer>(); primes.add(2); for (int i = 3; i <= n; i += 2) { for (int j = 0; j < primes.size(); j++) { if (i % primes.get(j) == 0){ break; } if (j == primes.size() - 1) { primes.add(i); break; } } } System.out.println(primes.size()); System.out.println("程序运行时间为" + (System.currentTimeMillis() - start)); return primes; }}
结果:
664579程序运行时间为1849.0664579程序运行时间为9559.0664579程序运行时间为1620130.0
数据足够大时,第一种方式最快,最后一种方式最慢
0 0
- 快速找质数
- 找质数算法
- 找质数算法
- ZCMU-1689-找质数
- python找质数对
- 找质数,分解质因数,找完全数
- 找素数(质数)算法
- C#找质数(素数)
- 快速求质数
- 质数、合数快速判断
- 快速求质数办法
- 快速查找质数
- 快速筛法求质数
- C#找质数(素数)厄拉多塞筛法
- 【笔记】160928 找质数/break/continue/goto
- 找小于N 的所有质数
- 找100-200以内的质数
- hdu1905(判断质数+快速幂)
- 新手上路
- queue接口的方法说明
- 开通了CSDN博客,留了脚印
- 跨域资源共享CORS详解
- 5- 4
- 快速找质数
- [BZOJ3209]花神的数论题(数位dp)
- centos部署xampp
- Watson Explorer 入门(10):导出 UIMA 管道至域适配搜索
- C/C++学习(5)友元类分析
- golang实现通过索引删除任意类型的slice元素
- 帧、报文、报文段、分组、包、数据报的概念区别
- PHP——日期和时间
- EMoji表情 Java+Mysql 存储