Calcolare logaritmo con operazioni elementari

Kuntz1
Ciao

Dati due valori x appartenente a Z+ con x>=2 e y appartenente a Z+U{0}. Calcolare il logaritmo intero di y in base x utilizzando solamente le operazioni elementari necessarie.
logxy=b

Esempio

X Y OUTPUT
2 10 3
4 1030 5

NB: per operazioni elementari si intendono:somma, sottrazione, moltiplicazione, divisione.



vi ringrazio in anticipo, io non sono proprio capace di farlo

Risposte
TomSawyer1
Basta che moltiplichi $x$ per se stesso, finché diventa maggiore di $y$, incrementando ogni volta un contatore - inizializzato a 0 - (che è il logaritmo intero).

Kuntz1
non so, ma x è la base del logaritmo?

cosa sono quell $ nel tuo messaggio?

Kuntz1
puoi dirmi proprio i passaggi da fare, non ci ho capito molto

grazie

TomSawyer1
L'hai detto tu che la x è la base del logaritmo, e dagli esempi che hai fatto si vede che lo è.

Cosa non ti è chiaro? Il logaritmo intero significa quante volte devi moltiplicare la base per se stessa affinché, eseguendo ancora una volta la moltiplicazione, sia maggiore dell'argomento (la Y) in questo caso.

Kuntz1
allora, io devo fare logaritmo in base x di y

quindi moltiplico la x per se stessa tante volte finche non diventa maggiore di y e nel frattempo incremento un contatore.

quindi il risultato mi verrà dato dal contatore?

esempio:

x=2
y=4

x*x = 4

contatore=1


nel caso la x(base) è minore di 2 cosa devo mettere come risultato?

Kuntz1
ho provato ma mi da un risultato sbagliato, ho provato a fare logaritmo in base 2 di 10 e mi da 1 , invece dovrebbe dare 3

TomSawyer1
La base deve essere maggiore di 2, l'hai scritto anche tu nel primo post.

Comunque, per geastire anche il caso in cui il logaritmo (vero) è esattamente un intero, basta moltiplicare ripetutamente un numero n (inizializzato al valore della base) per la base, poi verificare se è maggiore di y; in questo caso basta sottrarre 1 al contatotore inizializzato a 1. (prima mi sono espresso un po' ambiguamente).
Esempio per x=2, y=10

contatore=1
n=n*x=2*2=4; contatore=2
n=n*x=4*2=8; contatore=3
n=n*x=8*2=16; contatore=4

E dato che n è maggiore di y, cioè di 10, allora il risultato è contatore=contatore-1=3

E se chiaramente ti trovi ad avere n=y, allora prendi il contatore così com'è.

Esempio per x=2, y=4
contatore=1
n=n*x=2*2=4; contatore=2

n è uguale ad y, quindi il risultato è 2.

Kuntz1
ma il contatore lo devo inizializzare a 1 o 0?

Kuntz1
ho, risolto, funziona benissimo, ma se la base è minore di 2 cosa devo mettere come risultato?

TomSawyer1
Non è definito per la base minore di 2, quindi tu la metti tra le eccezioni.

Kuntz1
ok grazie

Kuntz1
allora

se la base del logaritmo è minore di 2 metto NON DEFINITO

e se la y è 0 o 1 cosa devo mettere come risultato?

TomSawyer1
Il logaritmo non e' definito per y<=0; e come ben saprai il logaritmo di 1 e' 0...

Kuntz1
ok grazie

sono abbstanza ignorante in matematica:-)

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.