[英]Why is this program for finding Prime Factors of a number using Java not working?
[英]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.