Напишите функцию, (через процедуру ) которая находит наибольший общий делитель двух натуральных чисел. пример: введите два натуральных числа: 7006652 112307574 нод(7006652, 112307574) = 1234.
Function gcd(a, b: longint): longint; // нахождение нод var i: longint; begin while b < > 0 do begin a : = a mod b; i : = b; b : = a; a : = i end; gcd : = a end; var a, b: longint; begin write('введите два натуральных числа: '); readln(a, b); writeln('нод(', a, ',', b, ')=', gcd(a, b)) end. тестовое решение: введите два натуральных числа: 7006652 112307574 нод(7006652,112307574)=1234
Lyalikova
28.01.2021
1. определим по косвенным признакам, какие ответы нам заранее не подходят (это быстро и может сильно дальнейшее решение) а) находим самую старшую цифру в примере - это 5. основание системы счисления должно быть не меньше, чем эта цифра плюс один, т.е. не меньше шести. пятиричная и двоичная система "выбывают". б) 14+15=29 в привычной нам десятичной системе счисления. а в ответе 31, т.е. больше. это возможно только если основание системы счисления меньше десяти. шестнадцатиричная система тоже выбыла. 2. посмотрим, что происходит при сложении в самом правом разряде. в десятичной системе 4+5=9, а у нас 4+5=1. так не бывает, на самом деле получилось 11, просто единичка пошла в старший разряд. но 11 больше 9 на 2, значит, основание системы счисления на 2 меньше, чем 10. 10-2=8. такой вариант у нас есть - один из двух возможных. его и выбираем. ответ: восьмкричная
Напишите функцию, (через процедуру ) которая находит наибольший общий делитель двух натуральных чисел. пример: введите два натуральных числа: 7006652 112307574 нод(7006652, 112307574) = 1234.