我有一些用于Euler项目的代码。求最大素因子600851475143。这需要很长时间才能完成,至少需要30分钟。你们能看出来是因为我的代码太长了,还是我的代码错了。还有,有什么让运行时间更快的提示吗?
public static void main(String[] args) {
System.out.println(factor(600851475143L));
}
public static long factor(long rc){
long num = rc;// need to add L to make it compile as long not int
long i;
long j;
long largest = 0;
long temp;
for(i = 2; i<rc;i++){
for(j=2;j<rc;j++){
if(i%j==0){
break;
}
if(j==rc-1){
temp = i;
if(largest<temp){
largest=temp;
}
else{
temp = 0;
}
}
}
}
return largest;
}
这个解决方案怎么样:
public static long factor(long rc) {
long n = rc;
List<Long> pfactors = new ArrayList<Long>();
for (long i = 2 ; i <= n ; i++) {
while (n % i == 0) {
pfactors.add(i);
n = n / i;
}
}
return pfactors.get(pfactors.size() - 1);
}
我跑得很快。
所以我想找到关于欧拉计划的问题3的答案。我需要确定给定数的最大素数因子。 引述欧拉项目:“13195的素数因子是5、7、13和29。600851475143中最大的素数因子是什么?” 我已经构建了我的代码,它在任何int大小的东西上都能完美地工作。但是由于它们给出的巨大数字,我的代码存在转换问题。 起初,我尝试切换到长变量和长数组,但我得到了错误:“可能从long到int的有损转换” 那么,我如何
问题内容: 我想在HashSet和HashMap中找到最大的数字。假设我的HashSet中有数字[22,6763,32,42,33],我想在当前的HashSet中找到最大的数字。我该怎么做?对于HashMap也是如此。希望您能帮助我。谢谢。 问题答案: 您可以用来从任何集合中找到最大的元素。同样,对于,您可以在或上使用相同的方法,具体取决于您想要的是最大键值还是最大值。 另外,如果您愿意,可以使用
我有一个数组,我需要三个数中最大的一个数和各自的索引值。我有一个这样的数组: 如何找到最大的数字及其索引值?
如何在java中找到负整数的最大有效数?我有以下代码,可以很好地处理正整数。这是代码: 现在,我可以通过将变量max减少到-5或低于-4来解决这个问题,但这是低效的,因为我们不知道最小值。 那么,如何实现呢?
假设n,a,b是正整数,其中n不是素数,因此n=ab和a≥b和(a)−b) 越小越好。如果给定n,找到a和b值的最佳算法是什么? 我读到了一个解决方案,他们试图通过搜索一个大于n的平方,将n表示为两个平方之间的差,这样S-n=(另一个平方)。为什么这比简单地找到n的素因子并搜索a,b是n的因子且a-b最小化的组合更好?
请告诉我如何在数据帧中查找列的值 在@Dadep的答案中,链接给出了正确的答案