java - 显示所有小于输入的素数的多线程程序

标签 java multithreading

我正在尝试编写一个程序,显示用户输入的素数以下的所有素数。唯一的要求是它必须是多线程的。这是我第一次使用Java和多线程。你能帮我吗?它编译了,但输出很奇怪。也许这是一个地址?

import java.util.Scanner;
import java.util.Arrays;

public class prime {
    public static void main(String[] args){
        // get number from user
        System.out.println("Enter a number: ");
        Scanner keyboard = new Scanner(System.in);
        int num = keyboard.nextInt();

        RunPrime runprime1 = new RunPrime (num);
        runprime1.start();
        Thread.yield();

        runprime1.SmallerPrimeNumbers();
    }
}

class RunPrime extends Thread {

    private int given_number;

    RunPrime (int n) {
        given_number = n;
    }

    public void SmallerPrimeNumbers() {
        int count = 0;
        for (int i = 0; i <= given_number; i++) {
            if (CheckPrime(i)) {
                count++;
            }
        }

        for (int i = 0; i < count; i++) {
            for (int j = 2; j <= given_number; j++) {
                if (CheckPrime(j)) {
                    number[i] = j;
                }
            }
        }

        System.out.println(number);
    }

    public static boolean CheckPrime (int n) {
        for (int i=2 ; i<n ; i++) {
            if (n%i == 0)
                return false;
        }
        return true;
    }
}

最佳答案

您的 SmallerPrimeNumbers() 函数有第二个看起来没有必要的 for 循环。您还分配并打印了未在任何地方声明的变量 number (这可能是给您带来麻烦的原因)。由于您只打印它们而不保存它们,因此您可以像这样简化功能:

public void SmallerPrimeNumbers() {
    int count = 0;
    for (int i = 0; i <= given_number; i++) {
        if (CheckPrime(i)) {
            System.out.println(i);
        }
    }
}

关于java - 显示所有小于输入的素数的多线程程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26070256/

相关文章:

java - Gradle 未下载测试依赖项

java - Rest Web 服务接口(interface) - 多线程

Python无法启动多线程

c++ - 自Windows 10 20H1起,多个具有单独线程的窗口停止工作

java - Printwriter 输出不接受 .printf 格式化程序到文件?

java - jspinner 标题边框被切断

java - 如何停止可运行的线程

c# - Task Parallel Library中的BlockingCollection不会自动释放底层实例的引用

java - 这段输出语句执行了多少次?

java - Spring Java 配置 : Specify class only