为了账号安全,请及时绑定邮箱和手机立即绑定

java中1到100之间的素数

java中1到100之间的素数

慕村225694 2021-11-24 20:13:30
伙计们,我一直试图弄清楚为什么这段代码在将近 5 个小时内没有显示适当的结果!!!这应该是一项非常简单的任务,但它让我发疯。我必须让项目使用包含的代码而不是另一个类似的代码。我遇到的问题是我的软件底部没有显示素数。根据我的理解,这段代码应该显示 1-100 的质数,并且除了最后一个数字外,所有的数字都是 5 行。非常感谢一些指导。public class Prime numbers 1-100{public static void main (String[] args) {    int number = 100;    // Assume the number is prime    boolean isPrime = true; // Is the current number prime?    // Test if number is prime    for (int divisor = 2; divisor <= number / 2; divisor++) {        if (number % divisor == 0) { // If true, number is not prime            isPrime = false; // Set isPrime to false            break; // Exit for loop        }        // print prime numbers        if(isPrime)            System.out.println("Prime numbers between 1 and " + number);    }}}
查看完整描述

3 回答

?
茅侃侃

TA贡献1842条经验 获得超21个赞

您的代码应该具有嵌套循环和一个数组,该数组存储要在最后显示的素数。

要在最后打印它们,您应该首先打印您的语句,然后使用循环打印包含找到的素数的数组。


查看完整回答
反对 回复 2021-11-24
?
桃花长相依

TA贡献1860条经验 获得超8个赞

如果你想打印从 1 到 100 的所有质数,那么你必须遍历所有这些数字(第一个循环),并为它们中的每一个迭代所有可能的除数(嵌套循环):


int number = 100;


boolean isPrime = false;


System.out.println("2");

System.out.println("3");


for (int i = 5; i <= number; i++) {

    for (int divisor = 2; divisor <= Math.sqrt(i); divisor++) {

        isPrime = !(i % divisor == 0);

        if (!isPrime)

            break;

    }


    if (isPrime)

        System.out.println("" + i);

}

请注意,对于 2 和 3,无法应用条件,因此首先打印它们。

我使用了@selbie 的优化提示<= sqrt(number)


查看完整回答
反对 回复 2021-11-24
?
精慕HU

TA贡献1845条经验 获得超8个赞

我要感谢大家的建议和提示。以及推动我的动力。我能够让程序运行。见下文


public class primes {

public static void main (String[] args) {

    final int NUMBER_OF_PRIMES = 26; // Number of primes to display

    final int NUMBER_OF_PRIMES_PER_LINE = 5; // Display 5 numbers per line

    int count = 0; // Count the number of prime numbers

    int number = 1; // A number to be tested for primeness


    System.out.println("The prime numbers between 1 and 100 are \n");


    // Repeatedly find prime numbers

    while (count < NUMBER_OF_PRIMES) {

        // Assume the number is prime

        boolean isPrime = true; // Is the current number prime?


        // Test whether number is prime

        for (int divisor = 2; divisor <= number / 2; divisor++) {

            if (number % divisor == 0) { // If true, number is not prime

                isPrime = false; // Set isPrime to false

                break; // Exit the for loop

            }

        }


        // Display the prime number and increase the count

        if (isPrime) {

            count++; // Increase the count


            if (count % NUMBER_OF_PRIMES_PER_LINE == 0) {

                // Display the number and advance to the new line

                System.out.println(number);

            }

            else

                System.out.print(number + " ");     

            }


        //Check if the next number is prime

        number++;

        }

    }

}


查看完整回答
反对 回复 2021-11-24
  • 3 回答
  • 0 关注
  • 202 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信