Условие этой задачи очень простое. Найдите наименьшее K такое, что K! делится на N без остатка. K! = 1·2·3· ... · (K - 1) ·K.

+1
Ответы (1)
  1. 29 августа, 22:27
    0
    К - это число, которое мы будем увеличивать на единицу, чтобы найти то минимальное, которое удовлетворяет заданию.

    N вводится пользователем. Оно будет критерием проверки деления нацело.

    var k, n, mult : integer;

    b : boolean;

    begin

    readln (n);

    k : = 1;

    while (b = false) do

    begin

    mult : = 1;

    for i:integer : = 1 to k do

    mult : = mult * i;

    if (mult mod n = 0) then

    Как только мы получили целое частное, сразу меняем false на true, и после этого цикл прекращает свою работу:

    b : = true

    else

    k : = k + 1;

    end;

    writeln (k:5, mult:5, n:5);

    end.
Знаешь ответ на этот вопрос?