使用java查找最大素数因子
我想找到最大的素因子600851475143。我写了下面的代码,但没有得到正确的答案。请帮帮我使用java查找最大素数因子,java,prime-factoring,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)
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);
}
}
这是一个简单的实现,可以找到这个数的最大素因子。
优化的一种方法是不将lpf增加1,而是将其设置为下一个最高质数 正确答案是什么?你得到了什么?你实现了什么算法?你试过调试吗?我在这里没有看到任何与素数有关的东西。实际上,这个程序似乎离我很近。它似乎可能返回一个数字中的第二大素数因子。我的建议是:从一个较小的数字开始。例如,21。当你尝试使用21而不是6000亿并进行更改时,你的程序会做什么?此外,它可能需要大量收紧。比如,数组的意义是什么?是你自己写的吗?你明白吗?为什么要用相同的数字填充arr,然后尝试在其中找到最大的值?很抱歉,我是新手。我需要时间来考虑有效的算法。顺便说一下,我发现了错误。我必须将大变量声明为long而不是int。很抱歉,但我是新手。我需要时间来考虑有效的算法。顺便说一下,我发现了这个错误。我必须将大变量声明为long而不是int。
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));
}
}