【发布时间】:2015-03-03 06:33:58
【问题描述】:
我是一名 java 学生,我刚开始使用 project euler 来练习代码编写和一般的打字。我目前卡在第 7 个问题上,找不到我的代码有什么问题。
public static void main(String[] args)
{
int num, remainder, divisor;
boolean working = true;
num = 2;
for(int count = 0; count <= 10001; count++)
{
divisor = num - 1;
remainder = 1;
working = true;
while(working != true)
{
remainder = 1;
divisor = num - 1;
while(remainder!=0)
{
remainder = num%divisor;
if(divisor==1);
{working = false;}
divisor--;
}
num = num++;
}
}
//System.out.println(num -1);
}
我得到的输出是 1,我不知道为什么。我对编码很陌生,所以如果我的代码不好且效率低下,请不要对我的代码发狂。
【问题讨论】:
-
离题了,但是检查素数的方式效率极低。第一,n 高度不能被 n-1 整除。第二,您不需要检查偶数除数。第三,你甚至不需要检查从 1 到 n-1 的所有除数,只需要从 1 到 sqrt(n) 就足够了
-
我曾经做过这样的事情。如果你坚持你已经找到的素数,你只需要检查这些。