[英]Find a prime number with loops
我是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)。
如果您想花哨的话,可以实施Eratosthenes筛网: http : //en.wikipedia.org/wiki/Sieve_of_Eratosthenes
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.