簡體   English   中英

Java:素數程序不起作用

[英]Java: Prime Number Program Not Working

為什么int j只得到值2? (int)realNum是否意味着它必須是自然數?

Scanner basicNum = new Scanner(System. in );
String insertNum = JOptionPane.showInputDialog(null, "Insert a number\n");

int realNum = Integer.parseInt(insertNum);
int j = realNum = 1;

if (realNum < 10000) {
    while ((realNum / j == (int) realNum)) {
        j++;
    }
    System.out.println(j);
    if (j > 2) {
        JOptionPane.showMessageDialog(null, "It is not a prime!!");
    }

    if (j < 2) {
        JOptionPane.showMessageDialog(null, "It is a prime!");
    }
} else {
    JOptionPane.showMessageDialog(null, "Too large number!");
}

int j = realNum = 1; j realNum為1。

因此realNum / j == (int)realNum直到j大於1才成立。

因為realNum已經是int類型,所以(int)realNum上的(int)前綴是多余的。

同樣, realNum / j將以整數算術求值:任何余數都將被截斷。

在Java 8中,您可以像這樣輕松地做到這一點:

boolean isPrime(final int n) {
    return IntStream.range(2, n / 2+1).noneMatch(i -> n % i == 0);
}

在較早的版本中,此功能應執行相同的工作,

    String insertNum = JOptionPane.showInputDialog(null, "Insert a number\n");
    int realNum = Integer.parseInt(insertNum);
    boolean prime = true;
    for (int i = 2; i <= realNum / 2; i++) {
         if (realNum % i == 0) {
              JOptionPane.showMessageDialog(null, "It is not a prime!!");
              prime = false;
              break;
         }
    }
    if (prime) {
         JOptionPane.showMessageDialog(null, "It is a prime!");
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM