林內的BigInteger顯影用java這就需要找到兩個大整數(Y和Z)的應用程序:java查找滿足該兩個條件的特定範圍
Y^k < N and Z^j < N < Z^(j+1)
N,K和j是已知的。 N是一個大整數(1024bit)。
我目前的實現是通過選擇一個隨機的BigInteger來檢測Y和Z,並測試條件是否滿足。但問題是,有時需要很長時間才能找到解決方案,或者根本找不到解決方案(可能bitSize未正確計算)。 有什麼辦法可以加快速度嗎?
代碼:
BigInteger getMessage(int bitSize, int lowerBound, int upperBound, BigInteger module)
{
boolean foundOne = false;
BigInteger candidate = null;
while(!foundOne)
{
candidate = new BigInteger(bitSize,random);
foundOne = (upperBound == 0 || candidate.pow(upperBound).compareTo(module) > 0) && (lowerBound == 0 || candidate.pow(lowerBound).compareTo(module) < 0);
}
return candidate;
}
我沒有提到我需要幾個解決方案。我怎麼修改二進制搜索,所以我不總是得到相同的解決方案? – blejzz
您可以搜索'Z^j