我想找到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);
}
}
答案 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,而是将其设置为下一个最高素数。