public class oboroten3 {
public static void main(String[] args) {
int i = 2;
int b = 1000000;
while (b > 2) {
double d = Math.sqrt(b);
long p = Math.round(d);
int c = b % 10;
if ((c == 1) || (c == 3) || (c == 7) || (c == 9)) {
while ((i < p) && (b % i != 0)) {
if (i == b - 1) {
System.out.print(b + ",");
}
i++;
}
}
i = 2;
b++;
}
}
}
当我运行程序时没有任何事情发生,找到素数是有意义的,它是在我添加了取b的根部分之前工作的
答案 0 :(得分:0)
对于初学者来说
while (b > 2)
当b已经设置为1000000,然后在每个循环上增加b
所以这将无限制地运行而不会停止。这可能是你应该解决的第一件事。
答案 1 :(得分:0)
我相信这种情况会阻止控件进入内部while
循环,因此它不会打印任何内容:
(i < p)
在外while
之前,i初始化为2,b初始化为1000000.现在,您的if
条件(在内部while
内)检查是否i
等于b - 1
,如果i
小于p
,则永远不可能实现这一点。因此,如果您删除(i < p)
条件,它将正常工作。你的while循环是:
while (b % i != 0) {