gpt4 book ai didi

java - 费马关于素数Java的小定理

转载 作者:行者123 更新时间:2023-11-29 05:12:12 26 4
gpt4 key购买 nike

据我了解,如果 P 是素数,则 a^(p-1)-1 mod p =1我想要的是打印两个整数之间的每个素数我写的是:

public static void main(String[] args) {

Scanner r = new Scanner(System.in);
int x = Integer.parseInt(r.nextLine());
for (int i = 0; i < x; i++) {
String s = r.nextLine();
BigInteger n = new BigInteger(s.split(" ")[0]);
BigInteger m = new BigInteger(s.split(" ")[1]);

for (BigInteger j = n; j.compareTo(m) <= 0; j.add(BigInteger.ONE)) {
if (isPrime(j)) {
System.out.println(j);

}
}
}

}

private static boolean isPrime(BigInteger num) {
BigInteger a = num.subtract(num.divide(new BigInteger("2")));
a = a.modPow(num.subtract(BigInteger.ONE), num);
if (a == BigInteger.ONE) {
return true;
}
return false;
}

但它一直在运行,并没有停止。我做错了什么?

最佳答案

BigInteger 是不可变的。您需要将 add 的结果分配回 j

for (BigInteger j = n; j.compareTo(m) <= 0; j = j.add(BigInteger.ONE)) {

关于java - 费马关于素数Java的小定理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28033561/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com