qotd
© 2014-2026 Roberto Foschini All rights reserved

Numeri periodici e frazione generatrice

Un numero con un numero finito di cifre dopo la virgola in base 10 può diventare periodico in un'altra base (ad esempio 0,210 = 0,00112). Questa pagina riepiloga le regole per prevederlo; gli esempi di conversione svolti si trovano in Numeri reali.

Classificazione dei numeri decimali

Da numero decimale a frazione generatrice

Da frazione generatrice a numero decimale

Data una frazione, eseguendo la divisione tra numeratore e denominatore si ottiene un numero decimale. Ancor prima di eseguire la divisione è però possibile stabilire che tipo di numero decimale genera la frazione. Prima si riduce la frazione ai minimi termini, poi si calcola la scomposizione in fattori primi del denominatore. A questo punto:

Come cambiano le regole se la base di destinazione non è 10 (ad esempio 2)?

Calcolo la frazione generatrice del numero in base 10, poi ricerco i fattori primi del denominatore.

Algoritmo


// @brief Algoritmo (salvo errori)
// @author Roberto Foschini
// @date 31/01/2022
// @param $num di una frazione generatrice
// @param $den di una frazione generatrice

// semplifico la frazione
$g = gcd($num, $den);
$num /= $g;
$den /= $g;

// $lap = lunghezza antiperiodo (dipende solo da $den)
for ($lap=0; $den%2==0; ++$lap)
	$den/=2;

// $lp = lunghezza periodo (dipende solo da $den)
for ($r=1, $lp=0; $r>1 || $lp==0; ++$lp)
	$r = ($r*2) % $den;

// determino la tipologia di numero binario
if($den==1)
	return $lap;	// binario limitato con $lap cifre binarie
else {
	if($lap==0)
		return $lp;	// binario illimitato periodico con $lp cifre binarie
	else
		return $lap, $lp;	// binario illimitato misto con $lap|$lp cifre binarie
}

Strumenti