projecteuler003 - largest prime factor
/**
*
* projecteuler003 - largest prime factor
*
* The prime factors of 13195 are 5, 7, 13 and 29.
* What is the largest prime factor of the number
* 600851475143 ?
*/
#include <iostream>
#include <math.h>
int64_t CalculateLargestPrimeFactorNaive(int64_t num);
bool IsPrimeNaive(int64_t num);
int main(int argc, char *argv[])
{
int64_t num = 600851475143;
std::cout << "Largest prime factor of " << num
<< " is " << CalculateLargestPrimeFactorNaive(num)
<< std::endl;
return 0;
}
int64_t CalculateLargestPrimeFactorNaive(int64_t num) {
int64_t largest_prime = 1;
for (int i = 2; i < sqrt(num); i++) {
if (num % i == 0) {
if (IsPrimeNaive(i)) {
largest_prime = i;
}
}
}
return largest_prime;
}
bool IsPrimeNaive(int64_t num) {
// sqrt(num) is the largest possible prime factor
// of a number.
for (int64_t i = 2; i <= sqrt(num); i++) {
if (num % i == 0) {
return false;
}
}
return true;
}