Torna alle sfide
Media 0 risolte 0% di accettazione

Massimo Fattore Primo

Trova il più grande numero primo che divide un intero positivo.

Cosa imparerai

  • Dividere i fattori dal più piccolo al più grande
  • Fermarsi alla radice quadrata di ciò che resta
  • Gestire numeri grandi in modo efficiente

Problema

Un numero primo è un intero maggiore di 1 che non ha divisori positivi diversi da 1 e da sé stesso. Trova il massimo fattore primo di n. Se n è esso stesso primo, restituisci n.

Implementa largest_prime_factor(n).

Input

n: L'intero da fattorizzare.

Output

Restituisci il suo massimo divisore primo.

Vincoli

2 ≤ n ≤ 10¹². L'input 1 è escluso perché non ha fattori primi.

Esempi

Esempio 1
Input:
n = 84

Output atteso:
expected = 7
Input:
long long n = 84;

Output atteso:
long long expected = 7;
Input:
long n = 84;

Output atteso:
long expected = 7;

Spiegazione

84 = 2 × 2 × 3 × 7, quindi il massimo fattore primo è 7.

Esempio 2
Input:
n = 13

Output atteso:
expected = 13
Input:
long long n = 13;

Output atteso:
long long expected = 13;
Input:
long n = 13;

Output atteso:
long expected = 13;

Spiegazione

13 è un numero primo, quindi è il suo stesso massimo fattore primo.

Come affrontarlo

Prova prima da solo, poi apri un suggerimento alla volta.

Suggerimento 1

Rimuovi prima i piccoli fattori primi; il valore rimanente può solo diminuire, e l’ultimo fattore rimasto è la risposta.

Suggerimento 2

Prova i divisori solo fino alla radice quadrata del resto corrente, e dividilo ripetutamente quando entra.

Suggerimento 3

Se dopo aver controllato i fattori minori il resto è ancora > 1, allora quel resto è primo ed è il fattore più grande.

Complessità attesa

tempo O(√n), spazio aggiuntivo O(1)

Riferimenti

Questa sfida è adattata per CodeUtility. Segui la traccia e i vincoli sopra.

Impara dagli altri

Soluzioni della community

Nessuna soluzione pubblicata. Risolvi questa sfida per condividere la prima.