Java 最大素因子

Java 最大素因子,java,Java,我的java代码有点问题!问题是:13195的主要因素是5、7、13和29 数字600851475143中最大的素因子是什么 我的代码不知怎的不起作用!!发生了什么?谢谢你的帮助 public class Example_1 { public static void main (String[] args){ { System.out.println(largestPrimeFactor(600851475143)); } } private s

我的java代码有点问题!问题是:13195的主要因素是5、7、13和29

数字600851475143中最大的素因子是什么

我的代码不知怎的不起作用!!发生了什么?谢谢你的帮助

public class Example_1 {

    public static void main (String[] args){
    {
        System.out.println(largestPrimeFactor(600851475143));   
    }
}

private static long largestPrimeFactor(long number) {
        long result = 0;

        for(long x = 2;x<number;x++){

            if(number % x == 0){
                for( long y = 2; y < x ; y++ ){
                    if( x % y == 0){
                        break;
                    }
                    else{
                        result = x;
                    }
                }

            }
        }
        return result;
    }
}
公共类示例\u 1{
公共静态void main(字符串[]args){
{
系统输出打印LN(最大原始因子(600851475143));
}
}
私有静态long largestPrimeFactor(长数){
长结果=0;
对于(长x=2;x
汇编问题:


  • 方法
    largestPrimeFactor
    似乎在类之外
  • 常量
    600851475143
    对于带有
    L
    的int.Postfix太大:
    600851475143L

请注意,您编写的算法是次优的,这就是为什么在给定大输入时它可能会运行很长时间的原因。

largestPrimeFactor
在类之外。这与实际代码中的情况不同,对吗?此外,main方法在开始时有两个
{
public class Example_1 {

    public static void main (String[] args){
        System.out.println(largestPrimeFactor(600851475143L));   
    }

    private static long largestPrimeFactor(long number) {
        long result = 0;

        if (number % 2 == 0){
            result = 2;
            while (number % 2 == 0)
                number /= 2;
        }

        for(long x = 3; number > 1; x += 2)
            if (number % x == 0){
                result = x;
                while (number % x == 0)
                    number /= x;
            }

        return result;
    }

}
boolean xIsPrime = true;

for( long y = 2; y < x ; y++ ){
    if( x % y == 0){
        xIsPrime = false;
        break;
    }
}

if( xIsPrime ){
    result = x;
}
public class Example_1 {

    public static void main (String[] args){
        System.out.println(largestPrimeFactor(600851475143L));   
    }

    private static long largestPrimeFactor(long number) {
        long result = 0;

        if (number % 2 == 0){
            result = 2;
            while (number % 2 == 0)
                number /= 2;
        }

        for(long x = 3; number > 1; x += 2)
            if (number % x == 0){
                result = x;
                while (number % x == 0)
                    number /= x;
            }

        return result;
    }

}