java使用筛选法求n以内的素数示例(java求素数)

 更新时间:2014年04月16日 09:44:55   作者:  
这篇文章主要介绍了java使用筛选法求n以内的素数示例(java求素数),需要的朋友可以参考下

复制代码 代码如下:

/**
 * @author jxqlovedn
 * 埃拉托斯特尼素数筛选法,请参考:http://zh.wikipedia.org/zh-cn/埃拉托斯特尼筛法
 */
public class AratosternyAlgorithm {

 public static void getPrimes(int n) {
  if(n < 2 || n > 1000000)   // 之所以限制最大值为100万,是因为JVM内存限制,当然有其他灵活方案可以绕过(比如位图法)
   throw new IllegalArgumentException("输入参数n错误!");

  int[] array = new int[n];   // 假设初始所有数都是素数,且某个数是素数,则其值为0;比如第一个数为素数那么array[0]为0
  array[0] = 1;   // 0不是素数
  array[1] = 1;   // 1不是素数
  // 下面是筛选核心过程
  for(int i = 2; i < Math.sqrt(n);i++) {   // 从最小素数2开始
   if(array[i] == 0) {
    for(int j = i*i; j < n; j += i) {
     array[j] = 1;   // 标识该位置为非素数
    }
   }
  }

  // 打印n以内的所有素数,每排10个输出
  System.out.println(n + "以内的素数如下: ");
  int count = 0;        // 当前已经输出的素数个数
  int rowLength = 10;   // 每行输出的素数个数
  for(int i = 0; i < array.length; i++) {
   if(array[i] == 0) {
    if(count % rowLength == 0 && count != 0) {
     System.out.println();
    }
    count++;

    System.out.print(i + "\t");
   }
  }
 }

 public static void main(String[] args) {
  getPrimes(99999);
 }
}

相关文章

  • OAuth2生成token代码备忘实现过程示例

    OAuth2生成token代码备忘实现过程示例

    这篇文章主要为大家介绍了OAuth2生成token代码备忘实现过程示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • 如何避免Apache Beanutils属性copy

    如何避免Apache Beanutils属性copy

    这篇文章主要为大家介绍了如何避免Apache Beanutils属性copy的分析详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • Spring中的动态数据源解读

    Spring中的动态数据源解读

    这篇文章主要介绍了关于Spring中的动态数据源解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • SpringBoot2使用WebFlux函数式编程的方法

    SpringBoot2使用WebFlux函数式编程的方法

    这篇文章主要介绍了SpringBoot2使用WebFlux函数式编程的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • 如何使用IDEA 搭建 SpringCloud 项目

    如何使用IDEA 搭建 SpringCloud 项目

    所谓微服务,就是要把整个业务模块拆分成多个各司其职的小模块,做到单一职责原则,不会重复开发相同的业务代码,实现真正意义上的高内聚、低耦合,这篇文章主要介绍了如何使用IDEA 搭建 SpringCloud 项目,需要的朋友可以参考下
    2023-11-11
  • SpringBoot使用JDBC获取相关的数据方法

    SpringBoot使用JDBC获取相关的数据方法

    这篇文章主要介绍了SpringBoot使用JDBC获取相关的数据方法,JDBC与数据库建立连接、发送 操作数据库的语句并处理结果,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-03-03
  • MyBatis-Plus解决逻辑删除与唯一索引的问题

    MyBatis-Plus解决逻辑删除与唯一索引的问题

    本文主要介绍了MyBatis-Plus解决逻辑删除与唯一索引的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • springcloud项目改名的操作方法

    springcloud项目改名的操作方法

    这篇文章主要介绍了springcloud项目改名的操作方法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • SpringBoot Loki安装简介及实战思路

    SpringBoot Loki安装简介及实战思路

    这篇文章主要为大家介绍了SpringBoot Loki安装简介及实战思路详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪的相关资料
    2022-11-11
  • 详解java中的byte类型

    详解java中的byte类型

    Java也提供了一个byte数据类型,并且是基本类型。java byte是做为最小的数字来处理的,因此它的值域被定义为-128~127,也就是signed byte。下面这篇文章主要给大家介绍了关于java中byte类型的相关资料,需要的朋友可以参考下。
    2017-02-02

最新评论