java - 应该打印前 100 个素数的程序,只打印 0 和 1
问题描述
public class Programma{
public static void main(String args[]){
int flag=0;
for(int i=0;i<100;++i){
for(int j=1;j<i;++j){
if((i%j)==0)
flag=1;
break;
}
if (flag==0)
System.out.print(i + " ");
flag = 0;
}
}
}
输出:
$ java Programma
0 1
我真的不明白为什么..我已经多次检查代码并找不到错误。
解决方案
您忘记在 if 中添加大括号:
if((i%j)==0) {
flag=1;
break;
}
所以只有第一行在条件下,每次都执行中断。
然后你有一个逻辑错误,用 2 开始第二个循环:
for(int i=1;i<100;++i){
for(int j=2;j<i;++j){
现在你的代码可以工作了。要了解原因,请添加一个额外的 println ,例如
public class Programma{
public static void main(String args[]){
int flag=0;
for(int i=1;i<100;++i){
for(int j=2;j<i;++j){
if((i%j)==0){
System.out.println("# " + i + "/" + j);
flag=1;
break;
}
}
if (flag==0)
System.out.println(i + " ");
flag = 0;
}
}
}
并尝试使用/不更改 for 循环的起始值。
推荐阅读
- oracle - Sqlldr 加载器编号列导入
- python - 使用winreg写入长二进制数据
- android - 如何在 Kotlin 中显示时间?
- python - 第一列中 Pandas 数据框的所有列值,如何提取以纠正列
- python - str.extract 在 Python 中覆盖整个数据框列?
- ios - b/w NS 类和 UI 类有什么区别?我阅读了许多文档,但不理解所需的答案
- angular - 角度两种方式将多个复选框绑定为字符串数组
- sql - 根据前一行结果动态计算行值
- java - 异常说明:属性 [chain] 未声明为 ValueHolderInterface 类型,但其映射使用间接
- javascript - 将此分配给打字稿中的方法以进行 intillisense