在下面的代碼段中,請解釋從第一個「for」循環開始發生了什麼以及爲什麼。爲什麼添加了0,爲什麼在第二個循環中添加了1。 bigi下的「if」語句正在發生什麼。最後解釋一下modPow方法。預先感謝您提供有意義的答覆。Diffie-Hellman - 原始根模塊n - 密碼學問題
public static boolean isPrimitive(BigInteger m, BigInteger n) {
BigInteger bigi, vectorint;
Vector<BigInteger> v = new Vector<BigInteger>(m.intValue());
int i;
for (i=0;i<m.intValue();i++)
v.add(new BigInteger("0"));
for (i=1;i<m.intValue();i++)
{
bigi = new BigInteger("" + i);
if (m.gcd(bigi).intValue() == 1)
v.setElementAt(new BigInteger("1"), n.modPow(bigi,m).intValue());
}
for (i=0;i<m.intValue();i++)
{
bigi = new BigInteger("" + i);
if (m.gcd(bigi).intValue() == 1)
{
vectorint = v.elementAt(bigi.intValue());
if (vectorint.intValue() == 0)
i = m.intValue() + 1;
}
}
if (i == m.intValue() + 2)
return false;
else
return true;
}
這顯然是功課。我的問題是:爲什麼人們甚至不想改變他們的問題的文本,似乎有點不同於典型的作業問題? 「最後解釋一下modPow的方法。」這讓我大笑。 – Jack 2010-05-14 21:00:41