流程控制语句是用于控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。
其流程控制方式采用结构化程序设计中规定的三种基本流程结构,即:
分支结构
分支结构根据条件,选择性地执行某段代码;有
if-else和switch-case两种分支语句。 凡是可以使用switch-case的结构都可以方便地转换成if-else结构,反之不成立。 在使得代码可读性更好、执行效率更高的条件下,优先使用switch-case结构。
if-else
若多个条件表达式间互斥,语句的上下关系不唯一;若多个条件表达式间有交集,与要仔细判断语句的上下关系。
- if-else 结构是可以相互嵌套的;
- 如果 if-else 结构中的执行语句只有一行,对应的一对大括号可以省略,但不建议。
满足条件则执行
class IfTest{public static void main(String[] args){int heartBeats = 105;if(heartBeats < 60 || heartBeats > 100){System.out.println("心率不正常,需要做进一步检查。");}System.out.println("心率检查报告结束。");}}

运行结果:
心率不正常,需要做进一步检查。心率检查报告结束。
条件二选一
class IfTest{public static void main(String[] args){int age = 20;if(age < 18){System.out.println("小朋友你好!");}else{System.out.println("你不再是小孩子了。");}}}

运行结果:
你不再是小孩子了。
条件多选一
class IfTest{public static void main(String[] args){int age = 20;if(age < 0){System.out.println("非法数据。");}else if(age < 12){System.out.println("你好,小朋友!");}else if(age < 18){System.out.println("你好,少年!");}else if(age < 35){System.out.println("你好,青壮年!");}else if(age < 60){System.out.println("你好,中年!");}else if(age < 120){System.out.println("你好,爷爷/奶奶!");}else{System.out.println("你是要成仙啊~");}}}

运行结果:
你好,青壮年!
从控制台获取 3 个整数,并从小到大输出
import java.util.Scanner;class NumbersComparing {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.print("请输入第 1 个整数:");int i = scanner.nextInt();System.out.print("请输入第 2 个整数:");int j = scanner.nextInt();System.out.print("请输入第 3 个整数:");int k = scanner.nextInt();int max = (i >= j && i >= k) ? i : (j >= k) ? j : k;int min = (i <= j && i <= k) ? i : (j <= k) ? j : k;System.out.println("从小到大排序之后的值为:");System.out.println("" + min + ", " + (i + j + k - max - min) + ", " + max);}}
输入:-9、-67、8。
运行结果:
请输入第 1 个整数:-9请输入第 2 个整数:-67请输入第 3 个整数:8从小到大排序之后的值为:-67, -9, 8
彩票游戏
开发一个玩彩票的游戏:随机产生一个两位数彩票,提示用户输入一个两位数,然后按照下面的规则判定用户是否能获奖。如果用户输入的数:
- 完全匹配,奖金 10,000 美元;
- 数字匹配但顺序不一致,奖金 3,000 美元;
- 只有一个数字匹配但满足顺序,奖金 1,000 美元;
- 只有一个数字匹配但不满足顺序,奖金 500 美元;
- 没有匹配任何一个数字,彩票作废。
提示:使用
Math.random()产生 [0,1) 间的随机数。 随机数范围 [a, b]:(int) (Math.random() * (b - a + 1) + a)原本的范围为 1,(b-a) 确定放大倍数,用乘法扩大范围,+1 弥补左闭右开,+a 移动位置。 如:随机数范围 10~99,则:(int) (Math.random() * 90 + 10)
import java.util.Scanner;class TestCaiPiao {public static void main(String[] args) {//1. 随机产生一个两位数int randomNum = (int) (Math.random() * 90 + 10);//得到[10,100),取整后为[10,99]int tenRandom = randomNum / 10;int singleRandom = randomNum % 10;System.out.println(randomNum);//2、用户输入一个两位数Scanner scan = new Scanner(System.in);System.out.print("请输入一个两位数:");int guessNum = scan.nextInt();int tenGuess = guessNum / 10;int singleGuess = guessNum % 10;if (randomNum == guessNum) {System.out.println("奖金10,000美元");} else if (tenRandom == singleGuess && singleRandom == tenGuess) {System.out.println("奖金3,000美元");} else if (tenRandom == tenGuess || singleRandom == singleGuess) {System.out.println("奖金1,000美元");} else if (tenRandom == singleGuess || singleRandom == tenGuess) {System.out.println("奖金500美元");} else {System.out.println("没中奖");}System.out.println("中奖号码是:" + randomNum);}}
switch-case

根据
switch表达式中的值,依次匹配各个case中的常量。 一旦匹配成功,进入相应的case结构中,执行其中的语句。break;语句用于跳出switch-case结构,可选。若这个case中没有break;语句,将依次执行其下的case中的语句,而不再判断case的常量。
switch表达式只能是如下的 6 种数据类型:
- byte 类型;
- short 类型;
- char 类型;
- int 类型;
- 枚举类型(JDK 5.0 后新增);
- String 类型(JDK 7.0 后新增)。
case只能用于声明常量,不能用于声明范围。 如果多个 case 内的语句相同,可以直接合并。
class SwitchText {public static void main(String[] args) {String season = "summer";switch (season) {case "spring":System.out.println("春暖花开");break;case "summer":System.out.println("夏日炎炎");break;case "autumn":System.out.println("秋高气爽");break;case "winter":System.out.println("冬雪皑皑");break;default:System.out.println("季节输入有误");break;}}}
运行结果:
夏日炎炎
输入日子,计算是该年的第几天
import java.util.Scanner;class DateSerialNumberCalculation {public static void main(String[] args) {Scanner scan = new Scanner(System.in);System.out.print("请输入年份:");int year = scan.nextInt();System.out.print("请输入" + year + "年的月份:");int month = scan.nextInt();System.out.print("请输入" + year + "年的日期:");int day = scan.nextInt();int dateSerialNumber = 0;int february = 28;if (year % 4 == 0 & year % 100 != 0 | year % 400 == 0) {february = 29;}switch (month - 1) {case 12:dateSerialNumber += 31;case 11:dateSerialNumber += 30;case 10:dateSerialNumber += 31;case 9:dateSerialNumber += 30;case 8:dateSerialNumber += 31;case 7:dateSerialNumber += 31;case 6:dateSerialNumber += 31;case 5:dateSerialNumber += 31;case 4:dateSerialNumber += 31;case 3:dateSerialNumber += 31;case 2:boolean isLeapYear = year % 4 == 0 && year % 100 != 0 || year % 400 == 0;dateSerialNumber += isLeapYear ? 29 : 28;case 1:dateSerialNumber += 31;}dateSerialNumber += day;System.out.println(year + "年的" + month + "月" + day + "日是这年的第" + dateSerialNumber + "天。");}}
运行结果 1:
请输入年份:2020请输入2020年的月份:3请输入2020年的日期:12020年的3月1日是这年的第61天。
运行结果 2:
请输入年份:2021请输入2021年的月份:3请输入2021年的日期:12021年的3月1日是这年的第60天。
运行结果 3:
请输入年份:2020请输入2020年的月份:12请输入2020年的日期:72020年的12月7日是这年的第344天。
循环结构
循环结构根据循环条件,重复性的执行某段代码;有
while、do-while、for三种循环语句。JDK 1.5 提供了
foreach循环,方便地遍历集合、数组元素。循环语句的 4 个组成部分:
- 初始化部分 (init_statement);
- 循环条件部分 (test_exp);
- 循环体部分 (body_statement);
- 迭代部分 (alter_statement)。
for (; ; )和while (true)结构可以不限制循环次数。
- 跳出循环的方式有:循环条件返回
false;在循环体中执行了break;。
for循环
for (①<init_statement>; ②<test_exp>; ④<alter_statement>) {③<body_statement>;}①-→②-→③-→④-→②-→③-→④-→②-→③-→④-→……-→②
- 循环条件部分(
test_exp)是boolean类型表达式。当值为true时,执行循环体部分(body_statement);为false时,跳出循环;- 初始化部分(
init_statement)可以用逗号分隔以声明多个同一类型的变量;- 迭代部分(
alter_statement)可以有多个用逗号分隔的变量更新。
用 for 循环在控制台打印输出 5 次“Hello World!”
class LoopStructureFor {public static void main(String[] args) {for (int n = 1; n <= 5; n++) {System.out.print("n = " + n);System.out.println("\tHello World!");}}}
运行结果:
n = 1 Hello World!n = 2 Hello World!n = 3 Hello World!n = 4 Hello World!n = 5 Hello World!
思考以下代码的运行结果:
class LoopStructureFor {public static void main(String[] args) {int num = 1;for (System.out.print('a'); num <= 3; System.out.print('b'), num++){System.out.print('c');}}}
运行结果:
acbcbcb
遍历 0~100 以内的偶数,计数并求和
class LoopEvenNum {public static void main(String[] args) {int sumEvenNum = 0, countEvenNum = 0;for (int i = 0; i <= 100; i++) {if (i % 2 == 0) {countEvenNum++;System.out.printf("%d ", i);sumEvenNum += i;}}System.out.println("\nsumEvenNum = " + sumEvenNum);System.out.println("countEvenNum = " + countEvenNum);}}
运行结果:
0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98 100sumEvenNum = 2550countEvenNum = 51
倍数判断
从 1 循环到 150,并在每行打印一个值。在每个 3、5、7 的倍数行上分别打印标记。
class MultipleJudgement {public static void main(String[] args) {int i;for (i = 1; i <= 150; i++) {String add3, add5, add7;add3 = (i % 3 == 0) ? "[3]" : "";add5 = (i % 5 == 0) ? "[5]" : "";add7 = (i % 7 == 0) ? "[7]" : "";System.out.println(i + " - " + add3 + add5 + add7);}}}
运行结果:
1 -2 -3 - [3]4 -5 - [5]6 - [3]7 - [7]8 -9 - [3]10 - [5]11 -12 - [3]13 -14 - [7]15 - [3][5]16 -17 -18 - [3]19 -20 - [5]21 - [3][7]22 -23 -24 - [3]25 - [5]26 -27 - [3]28 - [7]29 -30 - [3][5]31 -32 -33 - [3]34 -35 - [5][7]36 - [3]37 -38 -39 - [3]40 - [5]41 -42 - [3][7]43 -44 -45 - [3][5]46 -47 -48 - [3]49 - [7]50 - [5]51 - [3]52 -53 -54 - [3]55 - [5]56 - [7]57 - [3]58 -59 -60 - [3][5]61 -62 -63 - [3][7]64 -65 - [5]66 - [3]67 -68 -69 - [3]70 - [5][7]71 -72 - [3]73 -74 -75 - [3][5]76 -77 - [7]78 - [3]79 -80 - [5]81 - [3]82 -83 -84 - [3][7]85 - [5]86 -87 - [3]88 -89 -90 - [3][5]91 - [7]92 -93 - [3]94 -95 - [5]96 - [3]97 -98 - [7]99 - [3]100 - [5]101 -102 - [3]103 -104 -105 - [3][5][7]106 -107 -108 - [3]109 -110 - [5]111 - [3]112 - [7]113 -114 - [3]115 - [5]116 -117 - [3]118 -119 - [7]120 - [3][5]121 -122 -123 - [3]124 -125 - [5]126 - [3][7]127 -128 -129 - [3]130 - [5]131 -132 - [3]133 - [7]134 -135 - [3][5]136 -137 -138 - [3]139 -140 - [5][7]141 - [3]142 -143 -144 - [3]145 - [5]146 -147 - [3][7]148 -149 -150 - [3][5]
break关键字的使用
输入两个正整数 m 和 n,求其最大公约数和最小公倍数。
class BreakTestInForLoop {public static void main(String[] args) {Scanner scan = new Scanner(System.in);System.out.print("请输入第 1 个正整数:");int m = scan.nextInt();System.out.print("请输入第 2 个正整数:");int n = scan.nextInt();int greatestCommonDivisor = 0;int leastCommonMultiple = 0;for (int i = Math.min(m, n); i >= 1; i--) {if (m % i == 0 && n % i == 0) {greatestCommonDivisor = i;break;}}for (int i = Math.max(m, n); i <= m * n; i++) {if (i % m == 0 && i % n == 0) {leastCommonMultiple = i;break;}}System.out.println("最大公约数:" + greatestCommonDivisor + "\n最小公倍数:" + leastCommonMultiple);}}
运行结果:
请输入第 1 个正整数:20请输入第 2 个正整数:12最大公约数:4最小公倍数:60
水仙花数
所谓水仙花数是指一个 3 位数,其各个位上数字立方和等于其本身。
class GetDaffodilsNumber {public static void main(String[] args) {for (int i = 100; i <= 999; i++) {int individual, ten, hundred;individual = i % 10;ten = i / 10 % 10;hundred = i / 100;if (Math.pow(individual, 3) + Math.pow(ten, 3) + Math.pow(hundred, 3) == i) {System.out.println("i = " + i);}}}}
运行结果:
i = 153i = 370i = 371i = 407
while循环
①<init_statement>;while (②<test_exp>) {③<body_statement>;④<alter_statement>;}①-→②-→③-→④-→②-→③-→④-→②-→③-→④-→……-→②
- 注意不要忘记声明迭代部分
④<alter_statement>。否则将出现死循环;for循环和while循环都可以相互转换。- 对于
for循环,初始化声明①<init_statement>;中的变量是局部变量,而while循环的可以在循环体外部被访问。它们的初始化声明变量的作用域不一样。
遍历 0~100 以内的偶数
class LoopStructureWhileTest {public static void main(String[] args) {int i = 0;while (i <= 100) {if (i % 2 == 0) {System.out.println("i = " + i);}i++;}}}
do-while循环
①<init_statement>;do {③<body_statement>;④<alter_statement>;} while (②<test_exp>);①-→③-→④-→②-→③-→④-→②-→③-→④-→……-→②do-while循环至少执行一次循环体。
遍历 0~100 以内的偶数
class LoopStructureDoWhileTest1 {public static void main(String[] args) {int i = 1;do {if (i % 2 == 0) {System.out.println("i = " + i);}i++;} while (i <= 100);}}
循环语句综合练习
从键盘读入个数不确定的整数,并判断读入的正数和负数的个数,输入为 0 时结束程序。
for
class LoopStructureExercise {public static void main(String[] args) {Scanner scan = new Scanner(System.in);int num, positiveNum = 0, negativeNum = 0;for (; ; ) {System.out.print("请输入一个整数(以[0]退出):");num = scan.nextInt();if (num > 0) {positiveNum++;} else if (num < 0) {negativeNum++;} else {break;}}System.out.println("positiveNum = " + positiveNum);System.out.println("negativeNum = " + negativeNum);}}
运行结果:
请输入一个整数(以[0]退出):1请输入一个整数(以[0]退出):2请输入一个整数(以[0]退出):-4请输入一个整数(以[0]退出):-6请输入一个整数(以[0]退出):-7请输入一个整数(以[0]退出):3请输入一个整数(以[0]退出):0positiveNum = 3negativeNum = 3
while
class LoopStructureExercise {public static void main(String[] args) {Scanner scan = new Scanner(System.in);int positiveNum = 0, negativeNum = 0;while (true) {System.out.print("请输入一个整数(以[0]退出):");int num = scan.nextInt();if (num > 0) {positiveNum++;} else if (num < 0) {negativeNum++;} else {break;}}System.out.println("positiveNum = " + positiveNum);System.out.println("negativeNum = " + negativeNum);}}
运行结果:
请输入一个整数(以[0]退出):1请输入一个整数(以[0]退出):4请输入一个整数(以[0]退出):2请输入一个整数(以[0]退出):-7请输入一个整数(以[0]退出):-5请输入一个整数(以[0]退出):22请输入一个整数(以[0]退出):4请输入一个整数(以[0]退出):0positiveNum = 5negativeNum = 2
do-while
class LoopStructureExercise3 {public static void main(String[] args) {Scanner scan = new Scanner(System.in);int positiveNum = 0, negativeNum = 0;do {System.out.print("请输入一个整数(以[0]退出):");int num = scan.nextInt();if (num > 0) {positiveNum++;} else if (num < 0) {negativeNum++;} else {break;}} while (true);System.out.println("positiveNum = " + positiveNum);System.out.println("negativeNum = " + negativeNum);}}
运行结果:
请输入一个整数(以[0]退出):1请输入一个整数(以[0]退出):2请输入一个整数(以[0]退出):3请输入一个整数(以[0]退出):4请输入一个整数(以[0]退出):-1请输入一个整数(以[0]退出):-2请输入一个整数(以[0]退出):0positiveNum = 4negativeNum = 2
嵌套循环
当内层循环的循环条件为
false则跳出内层循环,才可结束外层的当次循环,开始下一次的循环; 设外层循环次数为m次,内层为n次,则内层循环体实际上需要执行m*n次。
打印输出“*”型的矩形
class LoopNestingTest1 {public static void main(String[] args) {for (int raw = 1; raw <= 3; raw++) {for (int column = 1; column <= 6; column++) {System.out.print('*');}System.out.println();}}}
运行结果:
******************
打印输出直立的“-”型直角三角形
class LoopNestingTest2 {public static void main(String[] args) {for (int i = 1; i <= 5; i++) {for (int j = 1; j <= i; j++) {System.out.print('-');}System.out.println();}}}
运行结果
---------------
打印输出倒立的“·”型直角三角形
class LoopNestingTest3 {public static void main(String[] args) {for (int i = 6; i >= 1; i--) {for (int j = 1; j <= i; j++) {System.out.print('·');}System.out.println();}}}
运行结果
·····················
打印输出以下形状
** ** * ** * * ** * * * ** * * ** * ** **
代码参考:
class LoopNestingTest4 {public static void main(String[] args) {int width = 4;String mark = "* ", blank = " ";for (int i = 1; i <= width; i++) {for (int j = width - i + 1; j > 1; j--) {System.out.print(blank);}for (int k = 1; k <= i; k++) {System.out.print(mark);}System.out.println();}for (int i = width - 1; i >= 1; i--) {for (int k = 1; k <= width - i; k++) {System.out.print(blank);}for (int j = i; j >= 1; j--) {System.out.print(mark);}System.out.println();}}}
打印输出九九乘法表
class ChineseMultiplicationTable {public static void main(String[] args) {for (int i = 1; i <= 9; i++) {for (int j = 1; j <= i; j++) {System.out.print(j + "×" + i + "=" + i * j);System.out.print((i == j) ? "" : "\t");}System.out.println();}}}
运行结果:
1×1=11×2=2 2×2=41×3=3 2×3=6 3×3=91×4=4 2×4=8 3×4=12 4×4=161×5=5 2×5=10 3×5=15 4×5=20 5×5=251×6=6 2×6=12 3×6=18 4×6=24 5×6=30 6×6=361×7=7 2×7=14 3×7=21 4×7=28 5×7=35 6×7=42 7×7=491×8=8 2×8=16 3×8=24 4×8=32 5×8=40 6×8=48 7×8=56 8×8=641×9=9 2×9=18 3×9=27 4×9=36 5×9=45 6×9=54 7×9=63 8×9=72 9×9=81
试除法判断 100 以内的所有质数
基本策略
class GetPrimeNumber {public static void main(String[] args) {for (int i = 2; i <= 100; i++) { // 遍历自然数范围:[2,100]boolean isPrimeNumber = true;for (int j = 2; j <= i - 1; j++) {if (i % j == 0) {isPrimeNumber = false;}}System.out.print(isPrimeNumber ? i + "\t" : "");}}}
运行结果:
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、
优化方案
使用
System.currentTimeMillis();获取一个`long型`时间戳,表示从 _1970-01-01 00:00:00 至此刻的毫秒数。 在程序执行前后两次调用这个语句,作差可求得程序运行历时。
class GetPrimeNumber {/*** 质数:在大于 1 的自然数中,除了 1 和该数本身,无法被其他自然数整除的数。** @implNote 从 n 开始(n>=2),对于每一个待检测的数 N,如果在范围 [n, N-1] 内,* 没有任何一个数可以将 N 整除,那么数字 N 就是质数;* 只要有一个可以将 N 整除,那么数字 N 就是合数。* <p>* 范围 [n, N-1] 可以进一步缩小至 [n, √N]:任何一个合数 M 都可以表示为 a×b,其中 a>=b。* 当 a==b 时,n、a、b 的跨度范围最小。*/public static void main(String[] args) { // 程序的入口地址System.out.print("求质数:范围 2~");Scanner scan = new Scanner(System.in);int maximum = scan.nextInt(), primeCounter = 0;long begin = System.currentTimeMillis();for (int i = 2; i <= maximum; i++) { // 遍历自然数范围:[2, maximum]boolean isPrimeNumber = true; // 为每一个参与遍历的数初始化一个标识符:isPrimeNumber,默认是质数for (int j = 2; j <= Math.sqrt(i); j++) { // 若参与遍历的这个数是 N,需要从 2 开始比较。【优化二】缩减跨度范围if (i % j == 0) { // 取余,看是否除尽isPrimeNumber = false; // 可以被除了 1 和它本身的其他数整除 —— 不是质数break; // 【优化一】只要不是质数就跳出对这个数的循环判断}}if (isPrimeNumber) {primeCounter++; // 是质数 -> 给 primeCounter 加 1}}long end = System.currentTimeMillis();System.out.println("共计 " + primeCounter + " 个质数。"); // 【优化三】取消输出打印值的过程,只输出范围内的质数个数,提高效率System.out.println("耗时 (ms):" + (end - begin));}}
运行结果:
求质数:范围 2~10000000共计 664579 个质数。耗时 (ms):5422
求“完数”
public class GetPerfectNumber {/*** 若一个数恰好等于其因子之和,则为 “完数” (6 = 1+2+3=1×2×3)* 注:* 因子:除去该数本身的其他约数*/public static void main(String[] args) {for (int i = 1; i <= 1000; i++) {int factor = 0;for (int j = 1; j <= i / 2; j++) {if (i % j == 0) {factor += j;}}if (i == factor) {System.out.print("\t" + i);}}}}
运行结果:
6 28 496
特殊关键字的使用
| 关键字 | 使用范围 | 在循环结构中的作用 |
|---|---|---|
| break | switch-case结构、循环结构 |
结束当前循环 |
| continue | 循环结构 | 结束当次循环 |
break和continue默认只作用于内层的循环。通过在循环结构前加标识的方式可以作用于指定循环。
return关键字也可以用于结束循环,但主要用于对方法的结束。
break
class BreakTest1 {public static void main(String[] args) {for (int i = 1; i <= 10; i++) {if (i % 4 == 0) {break;}System.out.print(" " + i);}}}
运行结果:
1 2 3
嵌套:
class BreakTest2 {public static void main(String[] args) {for (int i = 1; i <= 4; i++) {for (int j = 1; j <= 10; j++) {if (j % 4 == 0) {break;}System.out.print(j);}System.out.println();}}}
运行结果:
123123123123
加标识
class BreakTest3 {public static void main(String[] args) {breakTest3:for (int i = 1; i <= 4; i++) {for (int j = 1; j <= 10; j++) {if (j % 4 == 0) {break breakTest3;}System.out.print(j);}System.out.println();}}}
运行结果:
123
continue
class ContinueTest1 {public static void main(String[] args) {for (int i = 1; i <= 10; i++) {if (i % 4 == 0) {continue;}System.out.print(" " + i);}}}
运行结果:
1 2 3 5 6 7 9 10
嵌套
class ContinueTest2 {public static void main(String[] args) {for (int i = 1; i <= 4; i++) {for (int j = 1; j <= 10; j++) {if (j % 4 == 0) {continue;}System.out.print(j);}System.out.println();}}}
运行结果:
123567910123567910123567910123567910
加标识
class ContinueTest3 {public static void main(String[] args) {continueTest3:for (int i = 1; i <= 4; i++) {for (int j = 1; j <= 10; j++) {if (j % 4 == 0) {continue continueTest3;}System.out.print(j);}System.out.println();}}}
运行结果:
123123123123
试除法判断质数(改进)
class GetPrimeNumberPro {public static void main(String[] args) {System.out.print("求质数:范围 2~");Scanner scan = new Scanner(System.in);int maximum = scan.nextInt(), primeCounter = 0;long begin = System.currentTimeMillis();loopTest:for (int i = 2; i <= maximum; i++) {for (int j = 2; j <= Math.sqrt(i); j++) {if (i % j == 0) {continue loopTest; // 不是质数,直接测试下一个数}}primeCounter++; // 只有是质数的时候才 +1}long end = System.currentTimeMillis();System.out.println("共计 " + primeCounter + " 个质数。");System.out.println("耗时 (ms):" + (end - begin));}}
