我编写了有关素数的代码,并且会听到您的意见或任何有关如何改进代码的建议。我是Java的初学者。
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
boolean a;
System.out.println("Please enter a number: ");
int zahl = s.nextInt();
if(zahl <= 0) {
System.out.println("Please enter a positive number without zero.");
return;
}
a = true;
for (int i = 2; i < zahl; i++) {
if (zahl % i == 0) {
a = false;
}
}
if (a == true) {
System.out.println("Is Prim");
}
if (a==false){
System.out.println("Not a prim");
}
}
答案 0 :(得分:0)
一些提示:
你做
System.out.println("Please enter a positive number without zero.");
return;
println 建议用户可以输入一个新值,但是不能,在这种情况下,最好说这个数字无效,所以您退出
当您执行a = false;
时,继续下去是没有用的, a 不可能恢复为真
尝试将数字除以sqrt以上是没有用的
有必要尝试用2除而不是其他偶数,因此将2加到 i 而不是1
如果if (a == true)
为假,则检查if (a==false)
无用
答案 1 :(得分:0)
最容易做到的是以下
代替
for (int i = 2; i < zahl; i++) {
if (zahl % i == 0) {
a = false;
}
}
将for循环更改为
for (int i = 2; i < Math.sqrt(zahl); i++)
如果没有平方根除以zahl的数字,则除平方根以外的任何数字都将除以zahl(这是先前除法的结果)。
此外,要输出答案,您可以执行以下操作:
System.out.println(zahl + " is " + ((a) ? "prime"
: "not prime"));
使用三元运算符?:
答案 2 :(得分:0)
您的代码是好的。我做了三个小改进:
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
boolean a;
int zahl = 0;
while (zahl <= 0) {
System.out.println("Please enter a positive int without zero.");
zahl = s.nextInt();
}
a = true;
for (int i = 2; i <= Math.sqrt(zahl); i++) {
if (zahl % i == 0) {
a = false;
break;
}
}
if (a == true) {
System.out.println("Is Prim");
} else {
System.out.println("Not a prim");
}
}