一段关于Java打印素数的代码,看不懂,求解答!

public class E04_FindPrimes {
  public static void main(String[] args) {
    int max = 100;
    // Get the max value from the command line,
    // if the argument has been provided:
    if(args.length != 0)
      max = Integer.parseInt(args[0]);
    for(int i = 1; i < max; i++) {
      boolean prime = true;
      for(int j = 2; j < i; j++)
        if(i % j == 0)
          prime = false;
      if(prime)
        System.out.print(i + " ");
    }
  }
} /* Output:
1 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
*///:~



鸿蒙传说
浏览 532回答 3
3回答

慕村9548890

首先1不是素数,这个程序有点问题下面注释下:public&nbsp;class&nbsp;E04_FindPrimes&nbsp;{ &nbsp;&nbsp;public&nbsp;static&nbsp;void&nbsp;main(String[]&nbsp;args)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;max&nbsp;=&nbsp;100; &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Get&nbsp;the&nbsp;max&nbsp;value&nbsp;from&nbsp;the&nbsp;command&nbsp;line, &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;if&nbsp;the&nbsp;argument&nbsp;has&nbsp;been&nbsp;provided: &nbsp;&nbsp;&nbsp;&nbsp;if(args.length&nbsp;!=&nbsp;0)&nbsp;//如果有参数 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max&nbsp;=&nbsp;Integer.parseInt(args[0]);&nbsp;//最大值从参数里设置,如果没有,默认100 &nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;i&nbsp;=&nbsp;1;&nbsp;i&nbsp;<&nbsp;max;&nbsp;i++)&nbsp;{&nbsp;//从1~max寻找,但是这里的1应该修改为2才对。 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;boolean&nbsp;prime&nbsp;=&nbsp;true;&nbsp;//&nbsp;都不能整除,默认就是素数,所以一开始是true &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;j&nbsp;=&nbsp;2;&nbsp;j&nbsp;<&nbsp;i;&nbsp;j++)&nbsp;//素数是除了自身和1,不能被别的数整除的数,所以这里从2~i-1逐一尝试,实际上尝试到i/2就可以了。 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(i&nbsp;%&nbsp;j&nbsp;==&nbsp;0)&nbsp;//如果可以整除 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;prime&nbsp;=&nbsp;false;&nbsp;//不是素数,这里加上一个break跳出循环更好 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(prime) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print(i&nbsp;+&nbsp;"&nbsp;");&nbsp;//如果是素数,输出,并且加上一个空格 &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;}

胡子哥哥

如果你传参运行,就是计算1到所传数组第一个数之间的质数,不传参就是计算1到100的所有质数,1既不是质数也不是合数

慕莱坞森

这个很简单啊,测试1到100(max的值为100)的数,首先第1个是1,就拿从2(1肯定能整除的所以从2开始)开始到它本身(即1)去除,如果有数能整除(即余数为0)就不是素数,prime为false,既然是false就不把这个数输出,如果没有被1和他本身之外的数整除(即是素数),prime = false;这句就不被执行,下面的条件prime为true,输出这个数。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java