gpt4 book ai didi

java - 通过循环查找质数

转载 作者:行者123 更新时间:2023-12-01 11:55:56 25 4
gpt4 key购买 nike

我是Java新手,我的作业是编写一个程序,用户输入一个数字,然后程序检查该数字是否是素数。

我必须使用任何循环和 JOptionPane 进行输入。

我已经成功编写了这段代码并且它有效:

import static javax.swing.JOptionPane.*;
public class Programmeringsoppgave5 {

public static void main(String[] args) {
int number = 0;
String readNumber = showInputDialog("Write a number and exit with ESC");

while (readNumber != null){
number = Integer.parseInt(readNumber);
if (number != 0 && (number == 1 || number == 2)){
System.out.println("Number " + readNumber + " is a prime number.");
} else if (number % 2 == 0){
System.out.println("Number " + readNumber + " is not a prime number.");
} else if (number % 2 == 1){
System.out.println("Number " + readNumber + " is a prime number.");
}//end if-test
readNumber = showInputDialog("Write a number and exit with ESC");
}//end while
} //end method
}//end class

我想知道是否有更简单或更好的方法来编写这个程序?

最佳答案

要确保一个数字是质数,您需要查看它是否可以被它下面的任何质数整除。

因此,您可以做一些更像是拥有一个迄今为止找到的素数的 ArrayList 的事情,它以硬编码的 2 开头。

然后,从 3 开始循环,并测试每个新数字是否可以被 ArrayList 中已有的任何素数整除。如果不是,则添加它并继续下一步。如果是,那么你就继续前进。

执行此操作,直到找到有问题的号码。

您可以执行一些优化。例如,当检查当前数字的因子的数字时,您只需要查找 sqrt(currNum)。

如果你想变得更奇特,你可以实现埃拉托斯特尼筛法:http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes

关于java - 通过循环查找质数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28444436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com