Răspuns :
In primul rand, conditia de la while este:
x-floor(x) != 0, scrisa matematic [tex]x - [x] \neq 0[/tex] sau [tex] \{x\} \neq 0 [/tex]
In while ai x *= 10, deci se va executa o data pentru fiecare cifra dupa virgula, si in b tii minte la ce numar trebuie sa imparti x(la final) ca sa obtii x-ul initial.
[tex]a = x_f \implies x_i = \frac{a}{b}, a,b \in \mathbb{N}, b \neq 0[/tex]
Acum ti se cere sa afli o pereche de numere (a, b), cu [tex]\frac{a}{b} = x[/tex] si [tex]|a-b|[/tex] minim.
Cum
[tex]\frac{ya}{yb} = \frac{a}{b} = x, (\forall)y \in \mathbb{Q}^*_+[/tex], rezulta ca trebuie sa cautam un y pentru care diferenta [tex]|ya - yb|[/tex] este minima, dar in acelasi timp [tex]ya, yb \in \mathbb{N}[/tex], si atunci perechea (ya, yb) este solutia cautata.
[tex]\displaystyle |ya - yb| \in \mathbb{N} \iff y|a-b|\in \mathbb{N}\\ \\ |a - b| \in \mathbb{N} \implies y = \frac{k}{cmmdc(a, b)}, k \in \mathbb{N}^*\\ \\ |ya-yb| \: minim\\ \\ \iff y|a-b|\: minim\\ \\ \iff \textrm{y minim} \iff k = 1 \implies y = \frac{1}{cmmdc(a, b)} \implies ya = \frac{a}{cmmdc(a,b)}, yb = \frac{b}{cmmdc(a,b)}[/tex]
Deci (a/cmmdc(a,b), b/cmmdc(a,b)) este solutia cautata
Vă mulțumim pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile prezentate v-au fost utile. Dacă aveți întrebări sau aveți nevoie de suport suplimentar, nu ezitați să ne contactați. Ne bucurăm să vă revedem și vă invităm să ne adăugați în lista de favorite!