我是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
我想知道是否有更简单或更好的方法来编写这个程序?
答案 0 :(得分:1)
要确保数字为素数,您需要查看它是否可以被下面的任何素数整除。
所以你可以做一些更像是你到目前为止找到的素数的ArrayList,它以硬编码的2开头。
然后,从3开始循环,然后测试每个新数字是否可被ArrayList中已有的任何素数整除。如果不是,则添加它并继续下一个。如果是,那么你就前进了。
您执行此操作直至找到相关号码。
您可以执行一些优化。例如,在检查作为当前数字因子的数字时,您只需要达到sqrt(currNum)。
如果你想获得幻想,你可以实施Eratosthenes筛选:http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes