当前位置: 首页 > 知识库问答 >
问题:

如何在java中找到600851475143的最大质因数

楚俊迈
2023-03-14

我有一些用于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;
}

共有1个答案

盖绪
2023-03-14

这个解决方案怎么样:

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的答案中,链接给出了正确的答案