Euler#3 Java项目 公共类问题3{ 公共静态void main(字符串参数[]){ 系统输出打印(primeMod(60085147514L)); } 公共静态双素数模(长d){ 长最大值=0; 整数计数=0; 对于(长i=2;i
我的猜测是Euler#3 Java项目 公共类问题3{ 公共静态void main(字符串参数[]){ 系统输出打印(primeMod(60085147514L)); } 公共静态双素数模(长d){ 长最大值=0; 整数计数=0; 对于(长i=2;i,java,numbers,Java,Numbers,我的猜测是s溢出,最终导致被零除。取而代之的是将salong。我的猜测是s溢出,最终导致被零除。取而代之的是将salong。当你遇到异常时,请ost堆栈跟踪的相关部分,至少是异常发生的那一行。我尝试了你的程序,但没有得到异常。你怎么知道它没有被零除?请发布一些输出。当你得到异常时,请发布堆栈跟踪的相关部分,至少是异常发生的那一行。i tried你的程序没有得到异常。你怎么知道它没有被零除?请发布一些输出。这看起来像是问题。如果(x%s==0){这意味着s为零,我在行上得到异常(int s=1;s
s
溢出,最终导致被零除。取而代之的是将s
along
。我的猜测是s
溢出,最终导致被零除。取而代之的是将s
along
。当你遇到异常时,请ost堆栈跟踪的相关部分,至少是异常发生的那一行。我尝试了你的程序,但没有得到异常。你怎么知道它没有被零除?请发布一些输出。当你得到异常时,请发布堆栈跟踪的相关部分,至少是异常发生的那一行。i tried你的程序没有得到异常。你怎么知道它没有被零除?请发布一些输出。这看起来像是问题。如果(x%s==0){这意味着s
为零,我在行上得到异常(int s=1;s@Code Guru当s初始化为1??时,s将如何变为零?@chaitanya10,因为s
溢出了int
的最大值。请尝试向primeCounter()添加SOP)您可以自己查看s
的值。我通过将其改为long得到了答案。谢谢。这看起来像是个问题。如果(x%s==0){
这意味着s
为零,我会在行上得到异常(int s=1;s@Code Guru当s被初始化为1??时,s怎么会变为零?@chaitanya10,因为s
溢出了int
的最大值。试着给primeCounter()添加一个SOP,自己看看s
的值。我把它改为long,得到了答案。谢谢
public class Problem3 {
public static void main (String args[]) {
System.out.print(primeMod(60085147514L));
}
public static double primeMod(long d) {
long max = 0;
int count = 0;
for (long i = 2; i < d; i++) {
if (d % i == 0) {
boolean isPrime = primeCounter(i);
if(isPrime == true) {
max = i;
System.out.println(max);
}
} else {
max = max;
}
}
return max;
}
public static boolean primeCounter(long x) {
int count = 0;
for (int s = 1; s <= x; s++) {
if (x % s == 0) {
count++;
}
}
if (count == 2) {
return true;
} else {
return false;
}
}
}