繁体   English   中英

Java-为什么我的素数程序不会显示最后一个数字?

[英]Java - Why won't my prime number program print the last number?

我应该为Java Intro类编写一个程序,该程序列出素数直至用户输入的素数。 但是,使用我拥有的代码,如果用户输入了质数,即使程序应在质数上输入,我的程序也不会列出该数字。 有人可以给我提示为什么它不起作用吗?

    int userNum=kbd.nextInt();
    if (userNum<2){
        System.out.println("Not a valid number.");
        System.exit(1);
    }
    System.out.println("The prime numbers up to your integer are:");
    for (int num1 = 2; num1<userNum; num1++) {   
        boolean prime = true;


        for (int num2 = 2; num2 < num1; num2++) {
            if (num1 % num2 == 0) {
                prime = false;
                break; 

            }
        }

        // Prints the number if it's prime.
        if (prime) {
            System.out.print(num1 + " ");
        }
    }

例如,当我输入“ 19”时,程序将打印所有素数,直到“ 17”。 谢谢!

您需要num1才能将值userNum作为要检查的最后一个值。

因此,您需要将num1 < userNum替换为num1 <= userNum

您的循环的条件为num1 < userNum 这意味着它允许userNum以下的所有数字。 您似乎想要的是下面的所有数字,包括userNum ,所以您想要num1 <= userNum

因此,循环的开始是这样的:

    for (int num1 = 2; num1 <= userNum; num1++) {   

改变这个

num1<userNum

num1<=userNum

此刻,您在for循环中两个数字相等之前停止。

将for语句的结束条件更改为num1 <= userNum。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM