for(i=0; i<n+1; i++)
{
y=y+(a[i]*(int)Math.pow(j,i));
}
int r=y/786433;
s[k]=y-(r*786433);
k++;
現在在此代碼中j
的值可以是786432
。所以,當我嘗試獲得一個數字的模數,如(1+2*(786432)^2+3*(786432)^3)%786433
然後我得到-521562
這是不正確的我以前也使用模運算符,但即使採用這種方法,我也得到了相同的答案,我得到的答案相同。在這種方法中,數字的模數存儲在數組s[k]
中。誰能幫忙?找到java中巨大數字的模數
786432立方甚至沒有那麼大。順便說一句,你可以使用模冪運算來避免大數目。 – harold
作爲sidenode,這是餘數運算符,而不是模運算符。如果一個數值是負數,餘數可以返回負數,但數學模算子不能這樣做。如果你想使用數學模運算'Math#floorMod' – SomeJavaGuy
@harold,但它存儲在'int'中太大了。 – Jesper