java实现查找101到200间的素数
2016-04-14 11:35
447 查看
以两种不同的方法使用java实现查找101到200间的素数。
方法一:
循环遍历101到200,对于每一次遍历都执行,除以2到该数平方根的取余。
方法二:
先找到2到最大值的平方根的倍数,即合数,再剔除掉。
循环遍历101到200的平方根14,对于每一次遍历都执行获取当前值得倍数(从101除以当前值开始),并从列表里将其remove掉。
方法一:
循环遍历101到200,对于每一次遍历都执行,除以2到该数平方根的取余。
方法二:
先找到2到最大值的平方根的倍数,即合数,再剔除掉。
循环遍历101到200的平方根14,对于每一次遍历都执行获取当前值得倍数(从101除以当前值开始),并从列表里将其remove掉。
package test; import java.util.ArrayList; /** * 101-200之间有多少个素数 */ import java.util.List; public class test2 { //方法一 public List<Integer> getSushu1(int min,int max) { List<Integer> sushus = new ArrayList<>(); int count = 0; for (int i = min; i <= max;i++) { int j; for (j = 2; j < Math.sqrt(i); j++) { count += 1; if (i % j == 0) { break; } } if (j > Math.sqrt(i)) { sushus.add(i); } } System.out.println(count); return sushus; } //方法二 public List<Integer> getSushu2(int min,int max) { List<Integer> sushus = new ArrayList<>(); for(int i = min;i <= max;i++) { sushus.add(i); } int count = 0; for (int i = 2; i <= Math.sqrt(max);i++) { for(int j = min/i;j<=max/i;j++) { count += 1; if(sushus.contains(i * j)) { sushus.remove(sushus.indexOf(i* j)); } } } System.out.println(count); return sushus; } public static void main(String[] args) { test2 test2 = new test2(); System.out.println(test2.getSushu1(101,200)); System.out.println(test2.getSushu2(101,200)); } }
相关文章推荐
- java开发环境的安装与配置
- java基础--java静态代码块和静态方法的区别、static用法
- JDK自带工具
- Java高级之信号灯Semaphore
- dubbo源码学习(三)基础知识:spring 自定义标签
- 20145335郝昊《java程序设计》第2次实验报告
- Java验证邮箱有效性和真实性
- Java基础学习(二)—数组
- 过滤器,监听器,拦截器的区别
- java 开发环境配置
- 【java入门点滴】String... args VS String[] args
- eclipse的人对在eclipse中关联源码
- Java内存分析和总结
- Struts2 拦截处理
- springmvc 自定义异常处理
- Java中子类在继承父类时所继承的属性和方法是和父类共用还是归属于自己
- MAC下搭建eclipse环境导入maven项目
- m个数随机取n个数的java实现
- java反射优化
- 创建Java项目1.8JDK、3.3Maven环境准备