§ 7. Паняцце дапаможнага алгарытму
7.3. Найбольшы агульны дзельнік двух лікаў
Найбольшым агульным дзельнікам (НАД) для двух цэлых лікаў называюць найбольшы з іх агульных дзельнікаў. Прыклад: для лікаў 42 і 24 найбольшы агульны дзельнік роўны 6. Існуюць некалькі алгарытмаў знаходжання НАД. На ўроках матэматыкі вы пазнаёміліся з наступным алгарытмам: 1) раскласці кожны з лікаў на простыя множнікі; 2) выбраць у раскладаннях агульныя множнікі; 3) перамножыць выбраныя лікі; На ўроках інфарматыкі ў 8-м класе вы пазнаёміліся з алгарытмам Эўкліда: 1) ад большага ліку аднімаем меншы; 2) калі атрымліваецца 0, то лікі роўныя адзін аднаму і гэта значэнне з’яўляецца НАД; 3) калі вынік адымання не роўны 0, то большы лік замяняем на рознасць большага і меншага; 4) пераходзім да пункта 1. Для рэалізацыі алгарытму з курса матэматыкі спатрэбіцца рэалізацыя некалькіх функцый: функцыя для раскладання ліку на множнікі, функцыя для параўнання двух раскладанняў і адбору аднолькавых лікаў, функцыя для перамнажэння лікаў. Акрамя таго, спатрэбіцца дадатковая памяць, каб захоўваць раскладанне лікаў. У той жа час для знаходжання НАД па алгарытме Эўкліда дастаткова адной функцыі, якая будзе працаваць з дзвюма перменнымі. Прыклад 7.9. Напісаць праграму вылічэння НОД(a, b, c). Этапы выканання задання I. Зыходныя даныя: a, b і c (тры лікі). II. Вынік: НОД (a, b, c). III. Алгарытм рашэння задачы. 1. Увод лікаў a, b, c. IV. Апісанне пераменных: a, b, c, d, f – int. Прыклад 7.10. На плоскасці зададзены адрэзак, канцы якога маюць цэлалікавыя каардынаты. Колькі пунктаў з цэлалікавымі каардынатамі належаць гэтаму адрэзку? Напрыклад, для адрэзка з канцамі (–5; 5) і (4; –1) такіх пунктаў будзе 4. Этапы выканання задання I. Зыходныя данныя: x1, y1, x2, y2 (каардынаты канцаў адрэзка). II. Вынік: k — колькасць навучэнцаў. III. Алгарытм рашэння задачы. 1. Увод зыходных даных. IV. Апісанне пераменных: x1, y1, x2, y2, k – int. Прыклад 7.11. Паралель дзясятых класаў напісала кантрольную работу. У выніку роўна a% навучэнцаў атрымалі адзнакі ад 7 да 10, астатнія — ад 1 да 6. Якая мінімальная колькасць навучэнцаў павінна быць у паралелі дзясятых класаў для таго, каб мог атрымацца такі вынік? Этапы выканання задання I. Зыходныя даныя: а — колькасць працэнтаў паспяховых работ. II. Вынік: k — количество учащихся. III. Алгарытм рашэння задачы. 1. Увод зыходных даных. |
Пример 7.7. Знаходжанне найбольшага агульнага дзельніка для лікаў 42 і 24: 1) 2) агульныя множнікі: 2 і 3; 3) Прыклад 7.8. Алгарытм Эўкліда для лікаў 42 і 24:
Аналізуючы дзеянні, якія выконваюцца ў алгарытме Эўкліда, можна заўважыць, што можна замяніць большы лік на астачу ад дзялення большага ліку на меншы. Карэктнасць дадзенага факту вынікае з наступнага сцверджання: калі a = b · q + r, то НОД(a, b) = НОД(b, r). Пры такой арганізацыі вылічэнняў алгарытм скончыць сваю работу, калі адзін з лікаў стане роўным нулю. Тады значэнне НАД будзе роўна іншаму ліку, паколькі НОД(r, 0) = r для любога ненулявога r (паколькі 0 дзеліцца на любы цэлы лік). Прыклад 7.9. V. Праграма:
VI. Тэсціраванне. Для кампілятара MinGW, які ўстанаўліваецца разам з Code::Bloks, рэалізавана функцыя __gcd(n, m). Яна знаходзіць НАД двух лікаў. Выкарыстоўваць гэту функцыю можна пасля падключэння бібліятэкі algorithm. Прыклад 7.10. V. Праграма:
VI. Тэсціраванне. Прыклад 7.11. V. Праграма:
VI. Тэсціраванне. У дадзенай рэалізацыі алгарытму Эўкліда выкарыстана наступная ўласцівасць: НОД (x, y) = НОД (y, x). Функцыя swap(x, y) мяняе месцамі значэнні пераменных x і y. |