java - 以下代码的逻辑有什么问题?
问题描述
下面的代码只给出了两个输出(2和3),在这之后它被终止了,为什么它不继续?
public class PrimeSeries {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
boolean prime = true;
for(int i=2;i<=N;i++) {
for(int j=2;j*j<=i;j++) {
if(i%j == 0) {
prime = false;
break;
}
}
if(prime == true) {
System.out.println(i);
}
}
}
}
解决方案
您提供的代码不起作用,因为您从未再次使变量 boolean prime 为 true 因此,只需在内部 for 循环的每次迭代后再次将boolean恢复为true即可。
public class PrimeSeries {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
boolean prime = true;
for(int i=2;i<=N;i++) {
// ADD THIS LINE
prime = true;
for(int j=2;j*j<=i;j++) {
if(i%j == 0) {
prime = false;
break;
}
}
if(prime == true) {
System.out.println(i);
}
}
}
}
这就对了!
推荐阅读
- react-native - 写入 Firebase 时反应本机,未处理的拒绝
- graph-tool - 图形工具中有没有办法让边缘与源顶点具有相同的颜色而没有颜色渐变?
- c# - Mapster 忽略列表中的映射
- r - 特拉维斯 CI 错误,而 devtools::chech() 没有
- javascript - 欧特克锻造。学习.forge.viewmodels
- java - 在spring jdbcTemplate中选择查询where in子句问题
- gitlab - 如何以编程方式访问 Gitlab 中的完整代码段?
- swift - Filter json to exclude value not in enum case
- pandas - pd.DataFrame 削减小数的尾数
- ipaf - 在 GitLab 中执行 PAF 测试脚本