【发布时间】:2018-08-29 17:58:50
【问题描述】:
我有点困惑。我想使用 while 循环打印从 2 开始到在 java 中输入的数字的所有素数,并且不想使用 n/2 逻辑。 我不知道我的代码有什么问题。请帮帮我。
这里是代码:-
import java.util.Scanner;
public class print_primes {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scn = new Scanner(System.in);
int n = scn.nextInt();
int rem = 0;
int i = 2;
int flag = 0;
int start = 3;
System.out.println("2");
while (start <= n) {
i = 2;
while (i <= start - 1) {
rem = start % i;
if (rem == 0) {
flag = 1;
}
i = i + 1;
}
if (flag == 0) {
System.out.println(start);
}
start++;
}
}
}
【问题讨论】:
-
代替 n/2,您可以将迭代减少到 n 的平方根!在网上搜索差不多。此外,还有
Sieve of Eratosthenes... -
你能告诉我在我的代码中需要改变什么,以便它能够工作吗?因为我对你提到的事情了解不多。那么请告诉我如何让它以我的风格工作?
-
请先说明问题所在。预期的结果和实际得到的结果
-
您也使用
int作为标志。boolean可能更适合这个 -
运行代码时会发生什么?你有任何错误吗?如果是这样,它们是什么?如果不是,输出是什么?它与您想要的有什么不同?我建议您阅读ericlippert.com/2014/03/05/how-to-debug-small-programs,了解有关如何调试代码的一些提示。