gpt4 book ai didi

java - 没有获得简单 java 程序的输出来找到最大素因数

转载 作者:行者123 更新时间:2023-11-30 06:41:02 25 4
gpt4 key购买 nike

class LargestPrimeFactor{
public static void main(String args[]){
long p=0L;
long n=600851475143L;
for(long i=2L;i<(n/2);i++){
if((BigInteger.valueOf(i)).isProbablePrime(1)){
if(n%i==0){
p=i;
}
}
}
System.out.println(p);
}
}

这是 problem 3 from Project Euler 。我编译了它,没有出现任何错误。但我没有得到任何输出。原因是什么?

最佳答案

它正在工作(例如,只需在循环内添加一个打印方法来检查 i )。
您当前正在使用暴力破解方法:
http://www.mathblog.dk/project-euler-problem-3/

如果您访问该链接,该人会告诉您替代解决方案。

我对此没有太多了解的情况下看到的问题是
您当前所做的操作太多了。
您将值“600851475143”存储在长数据类型中,并且您尝试
使用 int i(for 循环中的计数器)达到一半 (300425737571,5)。

https://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#MAX_VALUE

这告诉我们:“一个常量保存 int 可以具有的最大值,

2^(31)-1." = 2147483647

这只是您实际需要的0,00715 (0,7%)
所以这导致我们“溢出”。

考虑使用替代方法(第一个链接)
并将 for 循环的计数器更改为“long”。

关于java - 没有获得简单 java 程序的输出来找到最大素因数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44371605/

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