Java用for循环判断输入数字是否为质数 解决for+if无法跳出循环问题
Java for循环实现质数判断及循环跳出问题解决方案
核心实现逻辑
质数定义为大于1的自然数,除了1和自身外没有其他正因数,for循环实现时只需遍历到输入值的平方根即可,无需遍历全量数值,可大幅提升执行效率。
常见循环跳出异常原因
无法正常跳出循环的问题基本属于以下三类情况:
- break语句放在if判断分支外,导致首次循环就直接终止
- 未设置break触发逻辑,即使找到匹配因数也会执行完全部循环
- 状态标记变量在循环内被重复赋值,覆盖了匹配到因数后的状态
完整实现代码
import java.util.Scanner; public class PrimeCheck { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入要判断的数字: "); int num = scanner.nextInt(); boolean isPrime = true; // 输入合法性校验 if (num <= 1) { isPrime = false; } else if (num == 2) { isPrime = true; } else { // 偶数直接排除,减少循环次数 if (num % 2 == 0) { isPrime = false; } else { // for循环只遍历到平方根,步长设为2跳过偶数 for (int i = 3; i <= Math.sqrt(num); i += 2) { if (num % i == 0) { // 找到因数,标记为非质数后直接跳出循环 isPrime = false; break; } } } } if (isPrime) { System.out.println(num + " 是质数"); } else { System.out.println(num + " 不是质数"); } scanner.close(); } }
循环跳出逻辑说明
上述代码中break语句仅在num % i == 0条件成立时触发,此时已经确定当前数存在除了1和自身外的因数,无需继续遍历剩余数值,直接终止for循环即可。
如果需要在多层嵌套循环中跳出指定外层循环,可以使用标签语法:
outerLoop: for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { if (i * j > 20) { break outerLoop; // 直接跳出外层标记为outerLoop的循环 } } }
内容的提问来源于stack exchange,提问作者Akshar Joshi
相关产品推荐
相关产品推荐

