首页
学习
活动
专区
圈层
工具
发布

燕麦筛
EN

Stack Overflow用户
提问于 2018-02-11 09:59:49
回答 2查看 689关注 0票数 0

我正在编写一个实现eratosthenes筛子的程序。我可以得到它从2到任何给定的结束数,但是我们正在进行的分配要求我们输入起始值。我完全被困住了。我试过很多不同的密码,但它总是给我奇怪的答案。

我的起始值是起始值,结束值是结束值。我基本上想找出这个范围的黄金。谢谢!

代码语言:javascript
复制
    public static void sieve(int start, int end) {
    int size=(end-start)+1;
    boolean result[]=new boolean[size];
    int prime[]=new int[size];

    for(int i=0; i<size; i++) {
        prime[i]=start+i;
    }


    for(int i=0; i<size; i++) { //every number in result is true
        result[i]=true;
    }

    for(int p=2; p*p <size; p++) {
        if(result[p]==true) {
            for(int i=p*2; i<size; i +=p) {
                result[i]=false;
            }
        }

        for(int i=2; i<size; i++) {
            if(result[i]==true) {
                System.out.print(prime[i] + " ");

            }
        }
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-11 10:26:57

Eratosthenes的筛子的工作原理是将每个素数的倍数标记为非素数,从第一个素数2开始。

因此,即使需要在startend之间查找素数,仍然必须找到2和end之间的所有素数。这样做之后,只需在请求的范围内输出素数即可。

票数 0
EN

Stack Overflow用户

发布于 2021-10-30 11:32:29

代码语言:javascript
复制
public class To_find_a_prime_number_using_sieve_of_Eratosthenes { 
    public static void main(String args[]){

        int end_number;
        int arr[];
        arr=new int[100];
        Scanner S=new Scanner(System.in); 
        System.out.println("enter the end number which you want to print he prime number"); 
        end_number=S.nextInt(); 
        //adding natural numbers in the array
        for(int i=0;i<end_number;i++)
        {
            arr[i]=i;
        }
        for(int k=2;k<end_number;k++)
        {

            for(int l=2;l<end_number;l++)
            {
                if(arr[k]*l>end_number)
                { 
                    break; 
                } 
                else {
                    arr[arr[k]*l]=0;
                }

            }

        }

        for(int j=1;j<end_number;j++)
        {
            if(arr[j]!=0 && arr[j]!=1)
            {
                System.out.println(arr[j]); 
            } 
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48730309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档