我是一名在大学学习 IT 的学生。我一直在分配寻找万亿以上素数的任务。已给出步骤:
起始数字为一万亿
选择奇数候选人
将它们除以 3 和它们的平方根之间的每个奇数。如果其中一个整数均分候选者,则它被宣布为素数。
现在这就是我想出的:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class PrimeSearcher extends HttpServlet{
private long number = 10000000000000001L;
private boolean found = false;
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
PrintWriter out = response.getWriter();
while(!checkForPrime(number)){
number = number+2;
}
if(found){
out.println("The first prime number above 1 quadrillion is : " + number);
}
}
public boolean checkForPrime(long numberToCheck){
double sqrRoof = Math.sqrt(numberToCheck);
for(int i=3; i< sqrRoof; i++){
if(numberToCheck%i==0){
return false;
}
}
found= true;
return found;
}
}
我担心的是不确定我是否走在正确的道路上,另一个问题是这总是一个数字,第一个。谷歌搜索后,我在servlet.com和javafaq上发现他们正在使用线程,我已经运行了他们的线程,看起来很酷。我不太明白那个,但它给出了不同的数字。
所以我现在对如何实现该算法感到困惑,我真的不想复制那个算法。也许在理解了他们的方法之后,我可以更好地编写这个算法。
谢谢