gpt4 book ai didi

java - 使用 long 计算素数 (Java)

转载 作者:行者123 更新时间:2023-11-30 01:53:24 25 4
gpt4 key购买 nike

我想编写一个小程序,能够从欧拉数中找到前 10 位长的素数。

第99位的数字是我正在搜索的数字,但isPrim()方法没有正确响应。你看到出了什么问题吗?

我的代码

public class Main {

public static final String e = "27182818284590452353602874713526624977572470936999595749669676277240766303535475945713821785251664274274663919320030599218174135966";


public static void main(String[] args) {
System.out.println(e);
for (int i = 0; i < e.length() - 10; i++) {

String str = e.substring(i, i + 10);

long num = Long.parseLong(str);

boolean isPrim = isPrim(num);

if (isPrim == true) {
System.out.println("First prime: " + num);
break;
}

System.out.println(i + " " + str + " " + isPrim);

}

}

public static boolean isPrim(long number) {
if (number % 2 == 0) {
return false;
}
for (int j = 3; j * j < number; j+=2) {
if (number % j == 0) {
return false;
}
}
return true;
}
}

最佳答案

应该是j * j <= number ,否则您会将素数的平方视为素数。 IE。你的方法说 9是质数,因为没有小于 sqrt(9) 的分隔符.

此外,您的代码可能会找到短于 10 位数字的质数,因为它会检查 E 的所有 10 位数字子字符串,包括那些带有前导零的子字符串,例如 0452353602 .

此外,您需要更改 j 的类型至long以避免溢出。

关于java - 使用 long 计算素数 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55297130/

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