int main(void) { /*ASSERT_EQUALS(largestPrimeFactor(83), 83);*/ /*ASSERT_EQUALS(largestPrimeFactor(82), 41);*/ ASSERT(!isPrime(8462696833)); printf("%lu\n", largestPrimeFactor(600851475143LLU)); return 0; }
long long largestPrimeFactor(long long n) { if (n == 1 || n == 2) return n; long long m = sqrt(n); for (long long i = 2; i <= m; i++) { if (n % i == 0) { long long f1 = largestPrimeFactor(i); long long f2 = largestPrimeFactor(n/i); if (f1 > f2) return f1; else return f2; } } return n; }
int main() { int64_t number = 600851475143; std::cout << largestPrimeFactor(number) << std::endl; return 0; }
int main() { printf("%d\n", largestPrimeFactor(600851475143)); return 0; }
int main(int argc, char* argv[]) { long long n = atoll(argv[1]); printf("%d\n", largestPrimeFactor(n)); return 0; }
int main(int argc, char** argv) { int result = largestPrimeFactor(600851475143); printf("%d\n", result); }