首页 > 其他 > 详细

埃氏筛法求素数

时间:2019-05-20 16:30:38      阅读:501      评论:0      收藏:0      [点我收藏+]

用“埃氏筛法”求2~100以内的素数。2~100以内的数,先去掉2的倍数,再去掉3的倍数,再去掉5的倍数,……依此类推,最后剩下的就是素数。

要求使用数组及增强的for语句。

 

代码:

技术分享图片
 1 import java.util.ArrayList;
 2 
 3 public class FindPrim {
 4     public static void main(String[] args) {
 5         //思路:使用从0-100的一个数组,每个下标代表一个数,用值非0来代表该下标代表的数是素数
 6         //使用一个循环,从2起往后遍历,遇到的每个素数都用它来筛选一遍数组,将所有它的倍数的置为0
 7 
 8         //下面数组会自动初始化为0
 9         int[] arr = new int[101];
10 
11         //将数组从2-100,都假设为素数,用1表示
12         for (int i = 2; i<=100; i++){
13             arr[i] = i;
14         }
15 
16         int p,q;
17         //从前往后遍历,每遇到一个新的最小素数,就将其所有倍数都标记为非素数(自身除外)
18         for (int i = 2; i <= 100; i++){
19             //若是素数,则进入筛选流程
20             if (arr[i] != 0){
21                 //倍数从2倍起,q是倍数,p是乘积
22                 for (q=2; (p=q*i) <= 100; q++){
23                     arr[p] = 0;
24                 }
25             }
26         }
27 
28         //使用增强for输出
29         for(int i : arr){
30             if (i != 0){
31                 System.out.print(i + " ");
32             }
33         }
34     }
35 }
View Code

 

埃氏筛法求素数

原文:https://www.cnblogs.com/ninggg/p/10894577.html

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