Проблема № 3 в Project Euler:
Простые множители 13195: 5, 7, 13 и 29.
Какой самый большой простой делитель числа 600851475143?
Мое решение займет вечность. Я думаю, что получил правильную реализацию; однако при тестировании с большим числом я не смог увидеть результаты. Это бежит вечно. Интересно, что-то не так с моим алгоритмом:
public class LargestPrimeFactor3 {
public static void main(String[] args) {
long start, end, totalTime;
long num = 600851475143L;
long pFactor = 0;
start = System.currentTimeMillis();
for(int i = 2; i < num; i++) {
if(isPrime(i)) {
if(num % i == 0) {
pFactor = i;
}
}
}
end = System.currentTimeMillis();
totalTime = end - start;
System.out.println(pFactor + " Time: "+totalTime);
}
static boolean isPrime(long n) {
for(int i = 2; i < n; i++) {
if(n % i == 0) {
return false;
}
}
return true;
}
}
isPrime
цикла. Просто повторяйте доi > sqrt(n)
. - person Blender   schedule 19.08.2012BigInteger
вместоfor(int i = 2; i < num; i++)
в вашемmain
методе. - person fardjad   schedule 19.08.2012