我试图解决欧拉项目问题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;
}
}
将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;
}
你可以这样试试
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分钟,而且还在继续。很明显,我在这里的做法是错误的(是的,这个程序确实有效,我用较小的数字进行了尝试)。有人能提出一种不那么详尽