Java逻辑错误: isPrime

标签 java

请问我的代码中可能存在什么错误,为什么它打印数字而不是仅打印小于 10,000 的质数?

public class Isprime {
    public static void main(String[] args) {
        System.out.println("The  prime  numbers  less  that  10000 are:");
        int number = 2;
        printprime(number);

    }

    public static void printprime(int number) {
        int pperline = 10;
        int count = 0;
        while (number < 10000) {
            if (isprime(number)) {
                count++;
            }
            if (count % pperline == 0) {
                System.out.println();
            } else {
                System.out.print(number + ",");
            }
            number++;
        }
    }

    public static boolean isprime(int number) {
        for (int divisor = 2; divisor <= number / 2; divisor++) {
            if (number % divisor == 0)
                return false;
        }
        return true;
    }
}

最佳答案

您正在计算一个数字是否是素数,但您没有在检查该数字的条件内进行打印。这意味着您的素数计数是正确的,但是您为每个数字打印一些内容,而不仅仅是素数。

您需要将 print 语句移至 if (isprime(number)) 检查内。另外,您只打印一个质数换行符。您应该从格式逻辑中删除 else,这样就不会跳过每 10 个素数的打印:

public static void printprime(int number) {
    int pperline = 10;
    int count = 0;
    while (number < 10000) {
        if (isprime(number)) {
            count++;
            if (count % pperline == 0) {
                System.out.println();
            }
            System.out.print(number + ",");
        }
        number++;
    }
}

关于Java逻辑错误: isPrime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29809348/

相关文章:

java - 无法打开共享对象文件: No such file or directory error while run time

java - 使用 Jackson 反序列化时禁用标量到字符串的转换

java - 为什么日期转换会返回不同的时间戳?

java - Spring 启动: how to use @PropertySource to point to a text file outside the jar?

java - 如何使用嵌套循环每次打印字符串时取出字符串的最后一个字符

java - 以通用方式处理 JSON 响应

java - Java Rest api 中的资源实例

java - 尝试检索 session 变量中的数组列表

java - 使用 GraphView 和 Arduino 的 Android 蓝牙

java - NLTK MaltParser 无法解析