java - 我的老师说我应该将布尔变量移动到循环中。但我不明白该怎么做
问题描述
我的Java代码:
import java.util.Scanner;
public class PrimeNumbers {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Введите целое число: ");
int n = scanner.nextInt();
boolean isPrime = false;
for (int i = 2; i <= n; i++) {
for (int j = 2; j < i; j++) {
if (i % j == 0) {
isPrime = false;
break;
} else {
isPrime = true;
}
}
if (isPrime) {
System.out.println(i);
}
}
}
}
但是我的老师说我应该将布尔变量移到循环中。这将简化代码。但我不明白该怎么做。
解决方案
你的老师说的是这一行:
布尔 isPrime = false;
需要移到评论所在的循环中。您显然正在寻找 2 和 n 之间的所有素数。您的循环变量“i”是要测试的素数,无论它是否为素数,都需要在false
每次开始迭代测试时初始化。
for (int i = 2; i <= n; i++) {
// NEEDS TO BE RIGHT HERE -
boolean isPrime = true;
// You are finding Prime Numbers, and the outer-loop (loop-var 'i')
// Means the 'isPrime' needs to be re-initialized each time you start testing
// whether a certain number, i, is prime or not!
for (int j = 2; j < i; j++)
if (i % j == 0) { isPrime = false; break; }
// and this line needs to be removed completely.
// else { isPrime = true; }
if (isPrime) System.out.println(i);
}
推荐阅读
- sql - SQLite:在匹配条件中的连续行后查询下一条记录
- javascript - 我如何告诉 firebase-admin 停止(运行测试时)?
- azure-devops - 构建配置的分支?
- node.js - 试图了解您为 NODE_ENV 命令设置环境的位置
- sql - SQL Server - 当 case 语句不应该允许它时,STDEVP 在 datetime 列上失败
- android - Room LiveData 触发两次,发出一次陈旧的发射
- html - 响应式 iframe 视频列表居中水平和最大宽度
- c# - UWP 包括媒体播放器传输栏作为命令栏的一部分?
- php - PHP get_headers() 生成头文件
- java - 在 Java 进程上调用 Windows10 计算器?