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

最大主要因素-euler项目

越正阳
2023-03-14

我试图解决欧拉项目问题3,即:

13195的主要因子为5、7、13和29。数字600851475143中最大的素因子是什么?

这是我的解决方案,它适用于较小的值,但对于所需的数字却无法完成:

public class Pro3 {
    public static void main(String[] args) {
        long l=600851475143L;
        for(long lo=l/2;lo>=2;lo--){
            if(l%lo==0 && isPrime(lo)==true){
                    System.out.println(lo);
                    break;
            }
        }
    }

    static boolean isPrime(long x){
        for(int i=2;i<=Math.sqrt(x);i++){
            if(x%i==0){
                return false;
            }

        }
        return true;
    }
}

共有2个答案

谭绍晖
2023-03-14

将lo的起始值设置为Math。sqrt(l)1,将其更改为typeint,它应该可以很好地工作,因为它正是我所做的。我能想到的最好的猜测是,您的代码中有什么bug,是32位ALU和整数溢出的使用。

package page1;

import euler.Common;

/**
 * @author Obicere
 */
public class Euler003 {

    public static void main(final String[] args){
        long number = 600851475143L;
        int maxRange = (int) Math.sqrt(number) + 1;
        for(int i = maxRange; i >= 2; i--){
            if(number % i == 0 && Common.isPrime(i)){
                System.out.println(i);
                break;
            }
        }
    }

}
public static boolean isPrime(final int num) {
    if (num < 2) {
        return false;
    }
    if (num == 2) {
        return true;
    }
    for (int i = 2; i <= (int) Math.sqrt(num) + 1; i++) {
        if (num % i == 0) {
            return false;
        }
    }
    return true;
}
符棋
2023-03-14

你可以这样试试

 public static List<Double> primeFactors(double numbers) {
    double n  = numbers;
    List<Double> factors = new ArrayList<>();
    for (int i = 2; i <= n / i; i++) {
        while (n % i == 0) {
            factors.add((double) i);
            n /= i;
        }
    }
    if (n > 1) {
        factors.add(n);
    }
    return factors;
}

public static void main(String[] args) {
   List<Double> result=primeFactors(600851475143d);
   System.out.println("largest prime factor is :" + result.get(result.size()-1));
}

输出:

largest prime factor is :6857.0
 类似资料:
  • 我试图解决这个问题:https://www.hackerrank.com/contests/projecteuler/challenges/euler003/submissions/code/2977447 13195的质因数是5、7、13、29。 给定数N的最大素因子是什么? 输入格式第一行包含T,测试用例数。后面是T行,每行包含一个整数N。 每个测试用例的输出格式,显示N的最大素因子。 约束条

  • 问题内容: 我正在使用下面的代码寻找2500的主要因子,但是我的代码当前仅显示2,因此我不确定为什么会这样。 谢谢 问题答案: 使用 erathesthenes筛子首先生成素数列表:

  • 由两部分组成的问题: 试图确定600851475143的最大主因子,我在网上发现这个程序似乎有效。问题是,我很难弄清楚它到底是如何工作的,尽管我了解程序的基本功能。此外,我希望你能解释一下你可能知道的寻找素数因子的任何方法,也许不需要测试每个数字,以及你的方法是如何工作的 这是我在网上找到的素因式分解代码[注:此代码不正确。有关更好的代码,请参见下面Stefan的回答。]:

  • 我在研究Euler项目的问题,这是问题五: 最大素因子问题3 13195的素因子为5、7、13和29。 600851475143的最大质因数是什么? 我得到了工作代码: 因数(19*19*19*19*19*19*19*19*19*1999989899) x=33170854034208712,最后一个系数=182128674 33170854034208712 有人知道为什么这没有得到正确的答案吗

  • 问题: 13195的质因数是5、7、13、29。 数字600851475143中最大的素因子是什么? 我发现这个很简单,但运行这个文件花了很长时间,已经运行了一段时间,我得到的最高数字是716151937。 这是我的代码,我只是要等待还是我的代码中有错误? }

  • 这就是Euler项目的问题3。对于那些不知道的人,我必须找出最大的素因子600851475143。我有以下代码: 但是,当我用比600851475143小(很多)的东西测试程序时,比如100000000,那么程序需要时间——事实上,100000000到目前为止已经花了20分钟,而且还在继续。很明显,我在这里的做法是错误的(是的,这个程序确实有效,我用较小的数字进行了尝试)。有人能提出一种不那么详尽