algorytm
alg: Witam czy mógłby ktoś mi wyjaśnić na przykładowych danych najlepiej jak działa ponizszy
algorytm
tzn co konkretnie robi:
Dla i = 0,1,...,n−1 wykonuj kroki K02...K03
K02: Jeśli P[i] < 0, to P[i] ← −P[i]
K03: Jeśli a < 0, to V[i] ← (a div P[i]) × P[i]
inaczej V[i] ← ((a + P[i] − 1) div P[i]) × P[i]
; podzielnika P[i]
K04: s ← a − 1
K05: minv ← MAXC
K06: Dla i = 0,1,...,n−1 wykonuj kroki K07...K08
K07: Jeśli V[i] = s, to V[i] ← V[i] + P[i]
K08: Jeśli V[i] < minv, to minv ← V[i] ;
K09: s ← minv
K10: Jeśli s > b,
K11: Pisz s ;
K12: Idź do K05
15 sty 14:04
Mateusz: Algorytm ten znajduje w zadanym przedziale <a,b> wszystkie liczby podzielne przez zadane
dzielniki ktore znajdują się w tablicy P[] korzysta sie tu miedzy innymi z takiej własnosci
zapisu liczb jesli
p:k=m+R to p=m*k+R k≠0 oczywiscie
R−reszta z dzielenia w tym wypadku musi wynosic zero bo masz wykonac dzielenie
całkowitoliczbowe
15 sty 16:38
Mateusz: Tak jako ciekawostke jeszcze warto dodać że algorytm ten jest duzo wydajniejszy od
standardowego który w kazdych obiegach pętli głownej przechodzi przez liczby z przedziału
<a,b> i sprawdza czy kolejna liczba dzieli się bez reszty przez ktorys z dzielnikow z tablicy
P[]. ten sposob jest wydajniejszy poniewaz tutaj w kolejnych obiegach nie wykonuje sie dzielen
tylko dodawania i przez to chociazby pętla nie wykonuje pustych przebiegow co przekłada sie na
czas wykonania programu a to widać dopiero w przypadku duzego przedziału <a,b>i duzej
rozieznosci dzielnikow w P[].
15 sty 19:15