【发布时间】:2013-09-25 08:16:04
【问题描述】:
public class Q3
{
public static void main(String args[]){
int i, j;
int Max = 1000;
//It's obvious that the first fifty prime numbers are less than 1000.
int counter = 1;
while (counter <= 50){
for (i = 2; i < Max; i++){
for (j = 2; j < i; j++){
if ( i % j == 0){
break;
}
}
if (j >= i){
System.out.printf("%s ", i);
counter++;
}
if(counter % 10 == 0){
System.out.print("\n");
}
}
}
}
}
这是我编写的一个程序,用于列出前 50 个素数,每行 10 个。但是,由于 while 循环,它无法正常工作。执行后,这个程序列出了所有小于 1000 的素数。似乎 while 循环根本不起作用。谁能告诉我原因?非常感谢。
【问题讨论】:
-
j 将如何大于/等于 i ?
-
仅作记录。根本不应该有一个while循环。只有在不确定循环是否会被执行时才使用 while 循环。在您的情况下,您肯定会进入循环。在这种情况下,请使用 do-while。
-
非常感谢大家。但我可能需要改写我的问题。(对不起,我的英语不是我的母语。)我需要那个 while 循环来跟踪我列出的素数。算法是我一个一个地检查每个整数。只有当检查的数字是原始的时,计数器的值才会增加。不幸的是,代码不是这样工作的。再次,非常感谢
-
@user2814227 为什么不趁机尝试一下解决方案呢?他们就是这样做的。
标签: java while-loop