我正在尝试编写一个程序,显示用户输入的素数以下的所有素数。唯一的要求是它必须是多线程的。这是我第一次使用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/