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
と言う。このアプローチでは、数値の法は配列s[k]
に格納されます。誰も助けることができますか?Javaの巨大数のモジュラスを求める
786432立方体はそれほど大きくありません。ところで、モジュラ累乗を使用して大きな数値を避けることができます。 – harold
をサイドノードとして使用します。これは、剰余演算子であり、モジュロ演算子ではありません。 1つの値が負であれば、残りの部分は負の値を返すことができます。ただし、数学的なモジュロ演算子ではできません。数学的モジュロに 'Math#floorMod' – SomeJavaGuy
@haroldを使用したいのであれば、' int'に格納するには大きすぎます。 – Jesper