埃氏筛法求素数

用“埃氏筛法”求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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值