Dai blog precedenti abbiamo visto come lavorare sul periodo
di una frazione e come quest'ultimo dipendesse eslusivamente
dal denominatore della frazione.
Una frazione però può dare anche un antiperiodo. L'antiperiodo
è il numero di cifre dopo la virgola e che precedono quelle del
periodo.
Anche l'antiperiodo dipende esclusivamente dal denominatore
della frazione a/b. Per cui il numeratore può tranquillamente
essere a=1.
Alcuni esempi, con in rosso il periodo e in blu l'antiperiodo:
1/70 = 0.01428571428571428571428571429
1/130 = 0.007692307692307692307692307692
1/404 = 0.002475247524752475247524752475
1/808 = 0.001237623762376237623762376238
L'antiperiodo conta il numero di cifre antecedenti il periodo.
Da cosa dipende l'antiperiodo ed il periodo? E' lo stesso che chiedere:
"Da cosa dipende che un numero ha periodo finito, nullo o infinito?"
La periodicità, nulla, finita o infinita non è una proprietà
del numero (del denominatore della frazione) ma dipende da:
- base numerica che si considera (decimale, ottale, etc)
- numero di primi di cui è costituito il denominatore della frazione.
Ad esempio
1/10 = 0,1 è finito perchè 2, 5 e 10 sono contenuti in 10
1/3 = 0,33333 è irrazionale perchè 3 non è contenuto nella base 10
L'antiperiodo quindi è il massimo numero tra le potenze di 2^h e le potenze
di 5^k.
Quindi basta contare quante volte h è divisibile il numero per 2 e
quante volte k è divisibile il numero per 5 e si prende il massimo
tra i due valori h e k.
L'algoritmo quindi è molto semplice.
/*
*
* AntiPeriod of a fraction with
*
*/
AntPerN(n)= local(d2=0, d5=0); {
while( Mod(n,2) == 0, n = n/2; d2=d2+1);
while( Mod(n,5) == 0, n = n/5; d5=d5+1);
return(max(d2,d5));
}
Alla prox
domenica 27 dicembre 2009
Iscriviti a:
Commenti sul post (Atom)

0 commenti:
Posta un commento