用Java输出100内的质数和合数(包含100)
前言:
质数的概念:除了1和它本身以外不再有其它的因数,这个数就是质数。
合数的概念:除了1和它本身以外还有其它的因数,这个数就是合数。
1、用Java输出100内的质数
先分析一下,大家都知道1不是质数也不是合数,就从2开始。2除以1等于2,2除以2等于1,2的因数只有1和2,所以2是质数。接下来看3,3除以1等于3,3除以2等于1余1,3除以3等于1(其实没这个没必要看了,后看就不看本身与本身相除以了),3的因数只有1和3,所以3是质数。接下来看4,4除以1等于1,4除以2等于2,4除以3等于1余1,4的因数有1、2和4,所以4为合数……后面的也是这样算下去。
接下来上代码
public static void main(String[] args) { a: for (int i = 2; i <=100; i++) { b: for (int j = 2; j <= i; j++) { if (j == i) { System.out.println(i); } if (i % j == 0) { continue a; } } } }
结果如下:
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 Process finished with exit code 0
代码分析:
外层循环a的作用就是循环2到100作为除数。
内从循环b的作用就是循环2到和外层循环相等的数作为被除数。
if (j == i) {System.out.print(" " + i);}的作用就是当循环到自己除以自己的时候,说明自己已经是质数了,所以输出一下。
if (i % j == 0) {continue a;}的作用就是不停地判断 i 和 j 是否能整除,如果能整除,而且 i 和 j 不相等,那么就说明除数 i 已经不是质数了,直接让外层循环a跳过这个数的循环,开始判断下一个数。
注意:这两个判断的顺序不可以改变。
2、用Java输出100内的合数
分析一下,除了1之外,剩余的数不是质数就和合数,所以就很简单,将上面输出质数的代码稍加修改即可
public static void main(String[] args) { a: for (int i = 2; i <=100; i++) { b: for (int j = 2; j <= i; j++) { if (i % j == 0&&i!=j) { System.out.println(i); continue a; } } } }
结果如下:
4 6 8 9 10 12 14 15 16 18 20 21 22 24 25 26 27 28 30 32 33 34 35 36 38 39 40 42 44 45 46 48 49 50 51 52 54 55 56 57 58 60 62 63 64 65 66 68 69 70 72 74 75 76 77 78 80 81 82 84 85 86 87 88 90 91 92 93 94 95 96 98 99 100 Process finished with exit code 0
代码分析:
外层循环a的作用就是循环2到100作为除数。
内从循环b的作用就是循环2到和外层循环相等的数作为被除数。
if (i % j == 0&&i!=j) { System.out.println(i); continue a; }
这个判断的作用就是不停的不停地判断 i 和 j 是否能整除,如果能整除,而且 i 和 j 不相等,那么就说明除数 i 已经是合数了,所以输出 i,然后让外层循环a跳过这个数的循环,开始判断下一个数。
补充一下:
上面代码中的 a: 和 b:都是给循环起了个名字,方便后面用break和continue关键字跳过或结束某个循环。如果想直接结束所有循环可以直接用return关键字。