首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >输出素数- Java

输出素数- Java
EN

Stack Overflow用户
提问于 2015-07-11 10:03:53
回答 2查看 145关注 0票数 0

我的代码出了点问题。我正在尝试编写一个方法,它将输出2-10,000之间的所有质数。我还是个java的初学者,我不确定该怎么做,我知道我会使用二进制搜索方法和循环来做这件事。我试着按照我在课本和网上读过的例子;这就是我想出来的,但是它不能正常工作。我不确定它是否完全正确。任何关于如何做到这一点或修复这一点的帮助或建议将不胜感激。

代码语言:javascript
复制
public static void prime() {
    int i;   // variable for loop

    for(i=2; i<=10000; i++)
    {
        int factors =0;
        int j = 1;

        while(j<=i)
        {
            if(i%j == 0)
            { 
                factors++;
            } //End if
            j++;
        } 

        if(factors == 2)
        {
            System.out.println(i);
        } //End if
    }// End for
} // End method prime
EN

回答 2

Stack Overflow用户

发布于 2015-07-11 10:07:50

想一想质数的含义:一个只能被1及其本身整除的数。使用该定义,您可以编写一段效率更高的代码,检查当前数字是否能被1以外的数字及其本身整除,即2。

票数 1
EN

Stack Overflow用户

发布于 2015-07-11 10:12:19

您可以做的一个改进是,如果一个数具有两个以上的因子,则在达到第二个循环的极限之前停止测试它是否是质数。

代码语言:javascript
复制
public static void printPrimes()
{
    int i;   
    boolean isPrime ;

    for(i=2; i<=10000; i++)
    {
        int factors ;
        int j ;

        factors = 1 ;
        isPrime = true ;

        for(j = 2; isPrime && j <= i; j++)
        {
            if(i%j == 0)
            { 
                factors++;
            } 

            if(factors > 2)
            {
                isPrime = false ;
            }
        } 

        if(isPrime)
        {
            System.out.println(i);
        } 
    }

} 

如果您想要使用这段代码中提到的breakisPrime标志,这里有一个非常好的答案,它解释了为什么这两种方法都可以使用,而且更多的是样式问题,避免了复杂的外观条件

Is it bad practice to use break to exit a loop in java?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31352703

复制
相关文章

相似问题

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