Retour aux défis
Moyen 0 résolus 0 % de réussite

Largest Prime Factor

Find the largest prime that divides a positive integer.

Ce que vous allez apprendre

  • Divide out factors from smallest to largest
  • Stop at the square root of what is left
  • Handle large numbers efficiently

Problème

Afficher la traduction

A prime is an integer greater than 1 with no positive divisors other than 1 and itself. Find the largest prime factor of n. When n is itself prime, return n.

Implement largest_prime_factor(n).

Input

n: The integer to factor.

Output

Return its largest prime divisor.

Contraintes

2 ≤ n ≤ 10¹². The input 1 is excluded because it has no prime factor.

Exemples

Exemple 1
Entrée :
n = 84

Sortie attendue :
expected = 7
Entrée :
long long n = 84;

Sortie attendue :
long long expected = 7;
Entrée :
long n = 84;

Sortie attendue :
long expected = 7;

Explication

84 = 2 × 2 × 3 × 7, so the largest prime factor is 7.

Exemple 2
Entrée :
n = 13

Sortie attendue :
expected = 13
Entrée :
long long n = 13;

Sortie attendue :
long long expected = 13;
Entrée :
long n = 13;

Sortie attendue :
long expected = 13;

Explication

13 is prime, so it is its own largest prime factor.

Comment l'aborder

Essayez d'abord seul, puis ouvrez les indices un par un.

Indice 1

Remove small prime factors first; any remaining value can only shrink, and the last factor left is the answer.

Indice 2

Test divisors only up to the square root of the current remainder, and divide it out repeatedly when it fits.

Indice 3

If the remainder is still above 1 after checking smaller factors, that remainder is prime and is the largest factor.

Complexité attendue

O(√n) time, O(1) extra space

Références

Ce défi a été adapté pour CodeUtility. Suivez l'énoncé et les contraintes ci-dessus.

Apprenez des autres

Solutions de la communauté

Aucune solution publiée pour l'instant. Résolvez ce défi pour partager la première.