方法一

简单的质数寻找就是对1~100000的数进行遍历

方法二

这样的遍历复杂度为O(n2)

进行优化就可以发现偶数不可能为质数,因此质数也不可能含有偶数因子

方法三

经过计算发现所有的质数都满足4x+1或者4x-1

因此将其命名为模4遍历法

方法四

与方法三类似,创建了模6遍历法

以下是源代码

import java.util.ArrayList;

import java.util.List;

/**

* Author: samsung

* Date: 04/12/2019

* Email: ********@foxmail.com

**/

public class PrimeSearch {

public static void main(String[] args){

//寻找100000以内所有质数

//暴力搜索

long start1=System.currentTimeMillis();

List list1=new ArrayList<>();

list1.add(2);

for(int i=3;i<=100000;++i){

boolean flag=true;

for(int k=2;k

if(i%k==0){

flag=false;

break;

}

}

if(flag)list1.add(i);

}

System.out.println("暴力傻子式遍历法:");

System.out.println("共找到质数"+list1.size()+"个,耗时"+(System.currentTimeMillis()-start1)+"ms");

//排除偶数

long start2=System.currentTimeMillis();

List list2=new ArrayList<>();

list2.add(2);

for(int i=3;i<100000;i+=2){

boolean flag=true;

for(int k=3;k

if(i%k==0){

flag=false;

break;

}

}

if(flag)list2.add(i);

}

System.out.println("排除偶数和偶数因子遍历法:");

System.out.println("共找到质数"+list2.size()+"个,耗时"+(System.currentTimeMillis()-start2)+"ms");

//继续优化发现除2以外,其他质数均满足4x-1或者4x+1

//因此做出以下测试

long start3=System.currentTimeMillis();

List list3=new ArrayList<>();

list3.add(2);

int m=0,n=0;

for(int i=1;m<100000||n<100000;++i){

m=4*i-1;n=4*i+1;

if(m<100000){

boolean flag=true;

for(int k=3;k

if(m%k==0){

flag=false;

break;

}

}

if(flag)list3.add(m);

}

if(n<100000){

boolean flag=true;

for(int k=3;k

if(n%k==0){

flag=false;

break;

}

}

if(flag)list3.add(n);

}

}

System.out.println("模4遍历法:");

System.out.println("共找到质数"+list3.size()+"个,耗时"+(System.currentTimeMillis()-start3)+"ms");

//继续优化发现除2,3以外,其他质数均满足6x-1或者6x+1

//因此做出以下测试

long start4=System.currentTimeMillis();

List list4=new ArrayList<>();

list4.add(2);

list4.add(3);

m=0;n=0;

for(int i=1;m<100000||n<100000;++i){

m=6*i-1;n=6*i+1;

if(m<=100000){

boolean flag=true;

for(int k=3;k

if(m%k==0){

flag=false;

break;

}

}

if(flag)list4.add(m);

}

if(n<=100000){

boolean flag=true;

for(int k=3;k

if(n%k==0){

flag=false;

break;

}

}

if(flag)list4.add(n);

}

}

System.out.println("模6遍历法:");

System.out.println("共找到质数"+list4.size()+"个,耗时"+(System.currentTimeMillis()-start4)+"ms");

}

}

运行结果是

暴力傻子式遍历法:

共找到质数9592个,耗时1674ms

排除偶数和偶数因子遍历法:

共找到质数9592个,耗时661ms

模4遍历法:

共找到质数9592个,耗时661ms

模6遍历法:

共找到质数9592个,耗时655ms

由此得出结论,排除偶数因子的方法和模6模4遍历法速度基本一致

100000以内素数java实验结果截图_寻找100000以内素数(质数)相关推荐

  1. java web 截图_如何以Java实现网页截图技术

    今天看到某网友关于"如何以Java实现网页截图技术"的咨询帖,由于出现该咨询的地点非常不适合较长回复,故以博文形式回答. 事实上,如果您想以Java实现网页截图,也就是" ...

  2. java 素数欧拉筛选_[C++]欧拉素数筛的理解与实现

    在传统的素数筛法中,我们使用了对于每一个数n,在 1~(√n) 范围内进行取模检查,这样逐一判断的复杂度为n(√n). 但如果我们需要更快的筛法时怎么办? 于是著名的欧拉筛诞生了.它能将复杂度降为** ...

  3. java 树最大距离_寻找二叉树最远的叶子结点(实例讲解)

    面试的时候碰到一个题:如何找到一个二叉树最远的叶子结点,以及这个叶子结点到根节点的距离? 第一反应肯定是递归 如何能找到最远的叶子结点,同时也能记下这个叶子节点到根节点的距离呢?采用一个List保持从 ...

  4. java flash截图_求大神们帮助, 如何在java中实现文字数据转换成图片或flash显示

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 protected void doGet(HttpServletRequest request, HttpServletResponse response ...

  5. 利用素数表快速寻找 n 以内的所有素数

    http://blog.csdn.net/wxyztuv/article/details/7965556 三个函数,find_prime() 是利用素数表的方法,寻找素数的,find_prime_st ...

  6. python寻找n以内的素数算法

    本文所利用的素数性质是:所有的素数都是奇数,且除2,3外其余素数都出现在6n-1与6n+1这两个数列中 具体代码如下 首先创建一个长度为n的false列表,再将索引为2,3,和6n+1.6n-1这两个 ...

  7. (C++)寻找1-100以内所有素数,复杂度为O(nsqrt(n))与O(nloglogn)的两种方法

    注意:1既不是质数也不是合数,2是质数. 1. 复杂度为O(nsqrt(n)) 原理:先写一个判断整数是否为素数的函数,其复杂度为sqrt(n),其原理是对于一个数n,如果它有除了1和自身之外的因子, ...

  8. java图片切割类任务书_基于Java的截图工具(可储存编辑)的设计与实现毕业论文+任务书+翻译及原文+答辩PPT+源码+辅导视频...

    基于Java的截图工具(可储存编辑)的设计与实现 摘要 当今时代是飞速发展的信息时代,人们在对信息的处理中对图像的处理量与日俱增,这一点在文档人员上显得非常突出. 本软件采用Java语言进行模拟qq截 ...

  9. HDU1262 寻找素数对【素数】

    寻找素数对 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

最新文章

  1. JavaEE学习笔记之Servlet
  2. ad域控如何建立在云端_呼叫中心哪家好?选择云端呼叫中心还是本地化部署呼叫中心好?...
  3. matplotlib-绘制精美的图表
  4. macbookpro合盖后掉电_macbookpro外接显示器,主机盖还是不盖?
  5. CPU核数跟多线程的关系
  6. Web前端开发笔记——第二章 HTML语言 第三节 文本格式化标签
  7. 交换排序图解_排序算法学习分享(二)交换排序---冒泡排序与快速排序
  8. 双网卡主机配置oracle监听,VirtualBox设置双网卡实现虚机上网及主宿机互访
  9. Meteor的工作原理及优势与不足
  10. 20145227《网络对抗》后门原理与实践
  11. 数组题 倒置 加到字符串
  12. python制作网页挂机_python使用ip代理抓取网页
  13. Linux程序设计第二版练习题(第七章)
  14. VM虚拟机装Windows2000成功后VM Tools失败解决方法
  15. RGB HSV CMYK LAB颜色空间
  16. 20 个有用的 Go 语言微服务开发框架吐血总结!!!
  17. AndroidStudio下建立libs、raw、、assets、selector、shape、anim、存放so
  18. 基于LSTM-Attention模型的光伏电站发电量预估(1)
  19. apidoc生成文档时报错
  20. 【趣文】我是一个线程

热门文章

  1. 装修 —— 墙面装修施工
  2. Xilinx AXI4 协议
  3. 【栈】python、单调栈解决收集雨水问题、力扣42题
  4. 计算机网络笔记11 使用集线器的星形拓扑
  5. Delphi中判断一个日期是否是星期几、周末、工作日
  6. 无线高级设置部分概念
  7. 23最新Android车载系统开发入门指南,附项目实战源码
  8. 《智慧校园规划与管理》10个部分
  9. Excel怎么为单元格数据批量添加相同文本
  10. 又发现几个有趣实用的网站