Java 改进素数代码的建议?

Java 改进素数代码的建议?,java,Java,我写了一个关于素数的代码,并将听取您的意见或任何关于如何改进代码的建议。我是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) {

我写了一个关于素数的代码,并将听取您的意见或任何关于如何改进代码的建议。我是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");
    }
}
publicstaticvoidmain(字符串[]args){
扫描仪s=新的扫描仪(System.in);
布尔a;
System.out.println(“请输入一个数字:”);
int zahl=s.nextInt();
如果(zahl一些提示:

是吗

   System.out.println("Please enter a positive number without zero.");
   return;
println建议用户可以输入一个新值,但不能,在这种情况下,最好说该数字无效,所以退出

当您执行
a=false;
时,继续下去是没有用的,a不可能恢复为true

试图除以超过sqrt的数字是没有用的

有必要尝试除以2,但不能除以其他偶数,因此将2添加到i,而不是1

如果
If(a==true)
false,则检查
If(a==false)
一些提示是无用的:

是吗

   System.out.println("Please enter a positive number without zero.");
   return;
println建议用户可以输入一个新值,但不能,在这种情况下,最好说该数字无效,所以退出

当您执行
a=false;
时,继续下去是没有用的,a不可能恢复为true

试图除以超过sqrt的数字是没有用的

有必要尝试除以2,但不能除以其他偶数,因此将2添加到i,而不是1


如果
If(a==true)
false检查
If(a==false)
最简单的方法是

而不是

 for (int i = 2; i < zahl; i++) {

        if (zahl % i == 0) {
            a = false;
        }
    }

这是使用三元运算符?:

最简单的方法是

而不是

 for (int i = 2; i < zahl; i++) {

        if (zahl % i == 0) {
            a = false;
        }
    }

这是使用三元运算符?:您的代码很好。我做了三个小改进:

  • 输入会立即(而不仅仅是在输入错误之后)请求 正整数
  • 重复输入直到正确
  • for循环只运行到sqrt(zahl),这就足够了
publicstaticvoidmain(字符串[]args){
扫描仪s=新的扫描仪(System.in);
布尔a;
int-zahl=0;

(zahl您的代码很好。我做了三个小改进:

  • 输入会立即(而不仅仅是在输入错误之后)请求 正整数
  • 重复输入直到正确
  • for循环只运行到sqrt(zahl),这就足够了
publicstaticvoidmain(字符串[]args){
扫描仪s=新的扫描仪(System.in);
布尔a;
int-zahl=0;

while(zahl)向下滚动到
isPrime()
。这很好,我想你可以删除第二个if条件,在循环内打印not prime并打破循环。我试过你说的。但它总是输出:is prime。我不知道为什么。向下滚动到
isPrime()
。这很好,我想你可以删除第二个if条件,在循环内打印not prime并打破这个循环。我试过你说的。但它总是输出:is prime。我不知道为什么。
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");
    }
}