1
我有一個函數來決定給定的BigInteger是否是素數。在主類中,我通過傳遞的參數調用了該函數。現在,當我嘗試編譯時,出現以下錯誤。BigInteger模數不正例外
C:\Users\me\Downloads>java RSA_n_prime2_using_int
Exception in thread "main" java.lang.ArithmeticException: BigInteger: modulus not positive
at java.math.BigInteger.mod(Unknown Source)
at RSA_n_prime2_using_int.prime_check(RSA_n_prime2_using_int.java:92)
at RSA_n_prime2_using_int.main(RSA_n_prime2_using_int.java:20)
我的代碼看起來是這樣的
public static boolean prime_check(BigInteger val)
{
BigInteger prime_chk=new BigInteger("0");
//System.out.println("in the function");
boolean isprime=true;
BigInteger prime_value=val.add(BigInteger.ZERO);
if(val.equals(BigInteger.ZERO)||val.equals(BigInteger.ONE))
return false;
for(prime_chk.valueOf(2);prime_chk.compareTo(prime_value)<0;prime_chk.add(BigInteger.ONE))
{
if((prime_value.mod(prime_chk)).equals(BigInteger.ZERO))
{
isprime=false;
break;
}
}
return isprime;
}
在主函數,調用由如下
s1 = new BigInteger("1021");//s1=(int)Math.round(Math.random()*1000)%30;
if(prime_check(p1))
{
System.out.println(p1+" is prime");
}
請幫我尋找,我在那裏出了問題。
是否有你沒有使用'BigInteger.isProbablePrime'的原因? –