profile
Размещено 6 лет назад по предмету Информатика от Noel7Silver

Составить программу нахождения наименьшего общего кратного(НОК) двух чисел m и n, используя формулу n*m=НОД(m,n)*НОК(n,m). Разработать тесты для проверки правильности работы программы.

  1. Ответ на вопрос
    Ответ на вопрос дан UnderBookXP

    Ответ:

    Если на паскале, то вот:

    Объяснение:

    var

       a, b: integer;

    function nod(a, b: integer): integer;

    begin

       while a * b <> 0 do

           if a > b then

               a := a mod b

           else

               b := b mod a;

       

       nod := a + b;

    end;

    begin

       readln(a, b);

       write('NOK = ', a * b / nod(a, b));

    end.

  2. Ответ на вопрос
    Ответ на вопрос дан nelle987

    В программе на Питоне реализован алгоритм Евклида для нахождения НОД и найдено НОК из формулы из условия. Большая часть тестов для проверки использует случайные числа, для которых, например, проверяется, что НОК и НОД от (x, y) не изменяются, если их искать от (y, x), и т.д. (assert expr выбрасывает исключение, если expr ложно, так что если test сработало без ошибок, значит, всё ок)

    def gcd_lcm(a, b):

       x, y = a, b

       while x != 0 and y != 0:

           x, y = y % x, x

       gcd = x + y

       lcm = a // gcd * b

       return gcd, lcm

    def test():

       from random import randint

       x, y, z = [randint(1, 1000) for _ in range(3)]

       xx = gcd_lcm(x, x)

       xy = gcd_lcm(x, y)

       yx = gcd_lcm(y, x)

       yz = gcd_lcm(y, z)

       x1 = gcd_lcm(x, 1)

       zx_y = gcd_lcm(z * x, y)

       zx_zy = gcd_lcm(z * x, z * y)

       gcd_xy_z = gcd_lcm(xy[0], z)[0]

       gcd_x_yz = gcd_lcm(x, yz[0])[0]

       assert xx == (x, x)

       assert xy == yx

       assert xy[1] % xy[0] == 0

       assert xy[1] % x == 0

       assert xy[1] % y == 0

       assert x % xy[0] == 0

       assert y % xy[0] == 0

       assert x1[0] == 1

       assert x1[1] == x

       assert zx_y[0] % xy[0] == 0

       assert zx_y[1] % xy[1] == 0

       assert zx_zy[0] == z * xy[0]

       assert zx_zy[1] == z * xy[1]

       assert gcd_xy_z == gcd_x_yz

       assert gcd_lcm(2**7 * 3**15, 3**4 * 5**3) == (3**4, 2**7 * 3**15 * 5**3)

       assert gcd_lcm(7 * 917887, 7 * 850177) == (7, 7 * 850177 * 917887)

    if __name__ == "__main__":

       for _ in range(100):

           test()

Не тот ответ на вопрос, который вам нужен?
Найди верный ответ
Самые новые вопросы
tegysigalpa2012
Русский язык - 6 лет назад

Помогите решить тест по русскому языку тест по русскому языку «местоимение. разряды местоимений» для 6 класса 1. укажите личное местоимение: 1) некто 2) вас 3) ни с кем 4) собой 2. укажите относительное местоимение: 1) кто-либо 2) некоторый 3) кто 4) нам 3. укажите вопросительное местоимение: 1) кем-нибудь 2) кем 3) себе 4) никакой 4. укажите определительное местоимение: 1) наш 2) который 3) некий 4) каждый 5. укажите возвратное местоимение: 1) свой 2) чей 3) сам 4) себя 6. найдите указательное местоимение: 1) твой 2) какой 3) тот 4) их 7. найдите притяжательное местоимение: 1) самый 2) моего 3) иной 4) ничей 8. укажите неопределённое местоимение: 1) весь 2) какой-нибудь 3) любой 4) этот 9. укажите вопросительное местоимение: 1) сколько 2) кое-что 3) она 4) нами 10. в каком варианте ответа выделенное слово является притяжательным местоимением? 1) увидел их 2) её нет дома 3) её тетрадь 4) их не спросили

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.