繁体   English   中英

用循环查找素数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM