Java - 为什么我的素数程序不打印最后一个数字?

标签 java loops boolean

我应该为 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”之前的所有质数(包括“17”)。 谢谢!

最佳答案

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

因此,您需要替换 num1 < userNumnum1 <= userNum .

关于Java - 为什么我的素数程序不打印最后一个数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26457062/

相关文章:

javascript - boolean 值表现为 true,但列出为 false?

java - 为什么使用 `return x == 5 ? true : false;` ?

基于 Java SSL 套接字的客户端/服务器应用程序

r - 如何将结果存储在for循环的列表中

javascript - 多行下划线模板和 _.each

PHP如何查找重复项

java - 如何创建在 arrayList 中搜索给定参数的方法

java - 如何在没有继承的情况下避免 DTO 重复?

java - JUnit:比较两个无序文本文件的内容

java - Neo4j 错误 : java. lang.OutOfMemoryError:超出 GC 开销限制