首页 > 其他 > 详细

线性筛选法求素数——模板

时间:2021-05-29 17:51:25      阅读:17      评论:0      收藏:0      [点我收藏+]

求2~n范围内的素数模板

 1 package com.lzp.util.algorithm.template;
 2 
 3 import java.util.Arrays;
 4 
 5 /**
 6  * @Author LZP
 7  * @Date 2021/5/29 16:12
 8  * @Version 1.0
 9  */
10 public class Prime {
11 
12     private static int[] primes;
13     private static boolean[] flag;
14 
15     public static void main(String[] args) {
16         prime(90);
17         System.out.println(Arrays.toString(primes));
18     }
19 
20     public static void prime(int n) {
21         primes = new int[n + 10];
22         flag = new boolean[n + 10];
23         // 线性筛选法求素数
24         int cnt = 0;
25         for (int i = 2; i <= n; i++) {
26             if (!flag[i]) {
27                 // 表示没有被筛选掉,就添加到素数数组中
28                 primes[cnt++] = i;
29             }
30             // 开始线性筛选该数的倍数
31             for (int j = 0; j < cnt && primes[j] <= n / i; j++) {
32                 // 筛选
33                 flag[primes[j] * i] = true;
34             }
35         }
36     }
37 }

运行结果

技术分享图片

 

线性筛选法求素数——模板

原文:https://www.cnblogs.com/pengsay/p/14825627.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!