使用java找到最大的素因子

时间:2015-06-19 12:51:38

标签: java prime-factoring

我想找到600851475143的最大素数因子。我写了下面的代码,但我得不到正确的答案。请帮帮我......

public class A {
  public static void main(String[] args) {

    int arr[]=new int[25];
    int large=0;
    long n=600851475143L;
    long x=(long) Math.sqrt(n);
    Top:  for(int i=3;i<x;i=i+2)
    {
      if(n%i==0)
      {
        n=(long) n/i;
        for(int j=0;j<25;j++)
        {
          arr[j]=i;
        }
        break Top;
      }
    }
    //System.out.println(arr);
    int num=arr.length; 
    for(int i=0;i<num-1;i++)
    {
      if(arr[i]>arr[i+1])
      {
        large=arr[i];
      }
      else
      {
        large=arr[i+1]; 
      }
    }

    System.out.println(large); 
  }
}

1 个答案:

答案 0 :(得分:0)

public class LPF {
    public static void main(String[] args) {
        int lpf= 2;
        long num = 600851475143L; 
        while (num > lpf) {
            if (num % lpf == 0) {
                num/=lpf;
                lpf = 2;
            } else {
                lpf++;
            }
        }
        System.out.println("Largest prime factor is " + Integer.toString(lpf));
    }
}

这是一个简单的实现,可以找到这个数字的最大素数因子。 优化这种方法的一种方法是不将lpf增加1,而是将其设置为下一个最高素数。