Znajdowanie liczby najmniejszej

advertisement
Przykład: znajdowanie liczby najmniejszej.
Wskazać najmniejszą spośród trzech różnych liczb: a, b, c.
Inne sformułowanie zadania:
Mając trzy różna liczby a,b,c, wyznaczyć liczbę m , tak aby
m =a lub m = b lub m = c, przy czym m ≤ a , m ≤ b , m ≤ c.
Możliwe sytuacje:
1. a<b<c
2. a<c<b
3. b<a<c
4. b<c<a
5. c<a<b
6. c<b<a
Maszyna różnicowa Charlesa Babbage’a
Kolejne kwadraty
Kolejne liczby nieparzyste
12 = 0 + 1 ←⎯⎯⎯ 1
22 = 1 + 3 ←⎯⎯⎯
3=1+2
32 = 4 + 5 ←⎯⎯⎯
5=3+2
42 = 9 + 7 ←⎯⎯⎯
7=5+2
Aby policzyć kwadrat kolejnej liczby należy:
1. Ustawić liczby 0, 1 i 2 jako wartości początkowe
2. Wykonać dwa dodawania
• Dodać 2 dla uzyskania następnej liczby nieparzystej
• Dodać wynik do poprzedniego kwadratu
Systemy liczenia:
System dziesiętny:
- cyfry:
0,1,2,3,4,5,6,7,8,9
- postać liczby:
Cn Cn-1 Cn-2 . . . C1 C0
- wartość liczby:
Cn*10n+Cn-1*10n-1+Cn-2*10n-2+ ...+C1*101+C0*100
System dwójkowy (binarny):
- cyfry:
0,1
- postać liczby:
Bn Bn-1 Bn-2 . . . B1 B0
- wartość liczby:
Bn*2n+Bn-1*2n-1+Bn-2*2n-2+ ...+B1*21+B0*20
Postać binarna liczby dziesiętnej:
(13) 10= 8+4+1= 1*23+1*22+1*20 = 1*23+1*22+0*21+1*20
(13) 2= 1101
(191)10
191:2=95 r 1
95:2=47 r 1
47:2=23 r 1
23:2=11 r 1
11:2=5 r 1
5:2=2
r1
2:2=1
r0
1:2=0
r1
↑
⏐
⏐
⏐
⏐
⏐
⏐
⏐
(191)2 = 10111111
Sumowanie
dziesiętne:
binarne:
7
111
+5
+101
12
1100
Maszyny podstawowe (bramki i sumatory):
Bramka NOT:
Input (A)
1
0
Output (B)
0
1
Bramka AND:
Input(A)
1
1
0
0
Input(B)
1
0
1
0
Output(C)
1
0
0
0
Bramka OR:
Input(A)
1
1
0
0
Input(B)
1
0
1
0
Output(C)
1
1
1
0
Bramka OR
Sumator dwójkowy jednopozycyjny:
Input(A)
0
0
0
1
1
0
1
1
Input(B)
0
0
1
0
1
1
0
1
Input(Z1)
0
1
0
0
0
1
1
1
Output(C)
0
Output(Z2)
0
1
0
0
1
1
1
Algorytm Euklidesa
Dane są dwie nieujemne liczby całkowite m , n . Liczba
k=NWD(m,n) jest największym wspólnym dzielnikiem m i n jeśli
dzieli m oraz n i jest największą liczbą o tej własności.
Algorytm Euklidesa znajduje największy wspólny podzielnik.
Załóżmy n ≥ m ⇒ n = q *m + r gdzie 0 ≤ r < m.
Stąd:
• Jeśli r = 0 to NWD(m,n)=m
Jeśli jedna z liczb dzieli drugą bez reszty to mniejsza z tych
liczb jest największym wspólnym dzielnikiem.
• Jeśli r ≠ 0 to r = n – q*m
Każda liczba dzieląca n i m dzieli także r ⇒
NWD(m,n)=NWD(r,m) przy czym zgodnie z punktem
pierwszym NWD(0,m) = m.
Rozważmy liczby n=48, m=46.
48=1*46+2
46=23*2+0
czyli NWD(46,48)=NWD(2,46)=NWD(0,2) = 2
Zależność n = q *m + r zapewnia, że możemy generować pary
liczb o tym samym największym wspólnym dzielniku, elementy
tych par tworzą malejący ciąg liczb naturalnych.
Ciąg ten jest skończony, na jego końcu otrzymujemy szukany
dzielnik.
Download