我刚刚开始为大学编码,我必须编写一个程序来检查用户输入(整数)是否是质数。
我取得了不错的成绩,但我想征求您的意见以及我是否忘记了什么。
package uebung_3;
import java.util.Scanner;
public class PrimZahlen {
public static void main(String[] args) {
System.out.print("Enter a number: ");
Scanner key = new Scanner(System.in);
int in = key.nextInt();
prim(in);
}
private static void prim(int in) {//int in is a Scanner var.
if (in == 2 || in == 3) {
System.out.println(in + " is a prime number");
} else if (in == 5 || in == 7) {
System.out.println(in + " is a prime number");
} else if (in % 2 == 0 || in % 3 == 0) {
System.out.println(in + " is not a prime number.");
} else if (in % 5 == 0 || in % 7 == 0) {
System.out.println(in + " is not a prime number.");
} else {
System.out.println(in + " is a prime number.");
}
}
}
最佳答案
你可以用更数学的方式来做,而不仅仅是检查素因数 7。 这是我的解决方案:
public static void main(final String[] args) {
System.out.print("Enter a number: ");
final Scanner key = new Scanner(System.in);
final int in = key.nextInt();
if (isPrime(in)) {
System.out.println(in + " is a prime number");
} else {
System.out.println(in + " is not a prime number");
}
}
private static boolean isPrime(final int in) {
if (in < 2) return false;
for (int i=2; i <= Math.sqrt(in); i++){
if (in%i == 0){
return false;
}
}
return true;
}
关于Java 素数检查与用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46877785/