埃拉托色尼筛选法

介绍了埃拉托色尼筛选法的基本原理及其Java实现,该算法能够高效地找出指定范围内的所有质数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

埃拉托色尼筛选法(the Sieve of Eratosthenes)简称埃氏筛法,是古希腊数学家埃拉托色尼(Eratosthenes )提出的一种筛选法。 是针对自然数列中的自然数而实施的,用于求一定范围内的质数。
埃氏筛法步骤编辑
(1)先把1删除(现今数学界1既不是质数也不是合数)
(2)读取队列中当前最小的数2,然后把2的倍数删去
(3)读取队列中当前最小的数3,然后把3的倍数删去
(4)读取队列中当前最小的数5,然后把5的倍数删去
(5)读取队列中当前最小的数7,然后把7的倍数删去
(6)如上所述直到需求的范围内所有的数均删除或读取

“`
public class SieveOfEratosthenes {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    Scanner sc=new Scanner(System.in);
    System.out.println("请输入需要查询的范围(0~n):");
    int n=sc.nextInt();
    int a[]=new int[n+1];
    a=Eratosthenes(n);
    for(int i=0;i<a.length;i++){
        if(a[i]!=0&&a[i]!=1){
            System.out.println(a[i]);//输出所有质数(素数),0代表不是质数。
        }
    }
}
public static int[] Eratosthenes(int n){
    int a[]=new int[n+1];
    for(int i=0;i<=n;i++){
        a[i]=i;
    }
    for(int i=2;i<Math.sqrt(n);i++){//1既不是质数也不是合数,所有从2开始;
        for(int j=i+1;j<n+1;j++){
            if(a[j]%i==0&&a[j]!=0){//判断是否为质数
                a[j]=0;//将所有非质数用0替换
            }
        }
    }       
    return a;       
}

}“`

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值