首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >代码打印前6个梅森素数代码?

代码打印前6个梅森素数代码?
EN

Stack Overflow用户
提问于 2015-12-04 02:33:39
回答 2查看 3.4K关注 0票数 2

我被要求写一个方法来显示前六个Mersenne素数。我当然知道出了什么问题,但我就是搞不明白。我有这样的代码,它不显示任何内容:

代码语言:javascript
复制
public static void printMersennePrimes()
{
    int p = 1;
    int counter = 0;
    int powTwo = 2;
    boolean isPrime = true;

    while(counter <= 6) 
    {
        //determine p is a prime number or not
        for (int m = 2; isPrime; m++) {
            if (m * m > p) {
                isPrime = true;
                break;
            }
            if (p % m == 0) {
                isPrime = false;
            }
        }
        //if p is a prime number, test if it equals 2^n-1
        if (isPrime) {
            while(powTwo <= p + 1) {
                powTwo *= 2;
                if(powTwo == p + 1) {
                    System.out.println(p);
                    counter++;
                }
            }
        }
        p++;
        powTwo = 2;
    }
}

如果有人能帮我解释我的问题,我会很感激的.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-04 03:11:34

你有两个问题。第一种是break在for循环中将isPrime设置为true后建议的可怕的袋鼠。

第二个问题是,您从未将isPrime重置为true。一旦找到一个非素数,就不会执行对循环的素数检查,因为isPrime总是false。将isPrime = true;作为外部while循环的第一行代码,这应该可以做到这一点。

最后一件事。因为你从counter0开始,然后去<= 6,你实际上打印了7个素数,而不是6个。把< 6<= 5改为。

票数 2
EN

Stack Overflow用户

发布于 2015-12-04 05:48:00

Java的Stream使这类任务的代码更加清晰:

代码语言:javascript
复制
public static void main(String[] args) {
  IntStream.iterate(1, i -> i + 1)                                   // For all integers
    .map(i -> (int) Math.pow(2, i) - 1)                              // get the Mersenne style ones
    .filter(i -> IntStream.range(2, i).noneMatch(n -> i % n == 0))   // filter the primes
    .limit(6)                                                        // limit to the first 6
    .forEach(System.out::println);                                   // print them
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34079973

复制
相关文章

相似问题

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