我有几种方法来计算任何数字的最大素数因子,但它不会编译,因为它表示我的输入超出范围
public class ProjectEuler3 {
public static void main(String[] args) {
System.out.println (findfactors(600851475143));
}
public static float findfactors(long n){
long[]factors=new long[1000];int nooffactor=0;
int c =0;
for( long i=2;i<n;i++){
if (findPrime(i)){
factors[c++]=i;
nooffactor++;}
}
return factors[nooffactor-1];
}
public static boolean findPrime(float n){
for(long i=2;i<n;i++){
if(n%i==0)
return false;
}
return true;
}
}
答案 0 :(得分:4)
使用L
评估后缀以表示long
类型的常量:
findfactors(600851475143L)
答案 1 :(得分:2)
如果在代码中输入数字,则将它们视为整数值。但是,600851475143大于整数可以容纳。因此,你必须附加一个“L”来标记为long int:
findfactors(600851475143L)
答案 2 :(得分:1)
您可能还想查看BigInteger class,因为您可能需要考虑更大的数字