BigInteger number1 = new BigInteger("36161"); BigInteger number2 = new BigInteger("27059"); BigInteger number3 = number1.multiply(number2); System.out.println("N值为:" + number3); BigInteger number4 = number1.subtract(BigInteger.valueOf(1)).multiply(number2.subtract(BigInteger.valueOf(1))); System.out.println("T值为:" + number4); BigInteger e = BigInteger.valueOf(65537); System.out.println("加密指数为:" + e); for (int i = 1; BigInteger.valueOf(i).compareTo(number4) <= 0; i++) { if (ifSuShu(i)){ if ((BigInteger.valueOf(i).multiply(e)).mod(number4).compareTo(BigInteger.ONE) == 0){ System.out.println("符合条件的解密指数为" + i); } } } } public static boolean ifSuShu(int randomNumber){ if (randomNumber <= 1) { // 小于等于1的数都不是素数 return false; } for (int i = 2; i <= Math.sqrt(randomNumber); i++) { if (randomNumber % i == 0) { return false; } } return true; } 检查一下这些代码是否存在问题
时间: 2024-01-26 07:01:39 浏览: 70
经过阅读,代码存在一些问题:
1.缺少 main 方法,无法运行。
2.缺少导入 java.math.BigInteger 类的语句。
3.在 for 循环中,应该从 2 开始遍历,因为 1 不能作为解密指数。
4.在 if 判断中,应该使用 number4.mod(BigInteger.valueOf(i)) 方法代替 (BigInteger.valueOf(i).multiply(e)).mod(number4),因为前者更加高效。
5.在 ifSuShu 方法中,应该将 randomNumber % i == 0 的判断条件改为 randomNumber % i == 0 && i != randomNumber,因为素数不应该被自己整除。
修改后的代码如下:
```
import java.math.BigInteger;
public class Test {
public static void main(String[] args) {
BigInteger number1 = new BigInteger("36161");
BigInteger number2 = new BigInteger("27059");
BigInteger number3 = number1.multiply(number2);
System.out.println("N值为:" + number3);
BigInteger number4 = number1.subtract(BigInteger.valueOf(1)).multiply(number2.subtract(BigInteger.valueOf(1)));
System.out.println("T值为:" + number4);
BigInteger e = BigInteger.valueOf(65537);
System.out.println("加密指数为:" + e);
for (int i = 2; BigInteger.valueOf(i).compareTo(number4) <= 0; i++) {
if (ifSuShu(i)) {
if (number4.mod(BigInteger.valueOf(i)).compareTo(BigInteger.ONE) == 0) {
System.out.println("符合条件的解密指数为:" + i);
}
}
}
}
public static boolean ifSuShu(int randomNumber) {
if (randomNumber <= 1) {
// 小于等于1的数都不是素数
return false;
}
for (int i = 2; i <= Math.sqrt(randomNumber); i++) {
if (randomNumber % i == 0 && i != randomNumber) {
return false;
}
}
return true;
}
}
```
阅读全文