числа больше 2 ^53
имеется следующее задание
Наименьшее число m, такое, что m! делится без остатка на 10 — это m=5 (5! = 120). Аналогично, наименьшее число m, такое, что m! делится без остатка на 25 — это m=10. В общем случае, значение функции s(n) равно наименьшему числу m, такому что m! без остатка делится на n. Определим функцию S(M, N) = ∑s(n) для всех n ∈ [M, N]. К примеру, S(6, 10) = 3 + 7 + 4 + 6 + 5 = 25. Найдите S(3200000, 3300000). написал следующий код: https://jsfiddle.net/m8n1LLqz/ в примере взял от 6 до 10, но если вы возьмете 3200000, 3300000, то при нахождении числа, факториал которого будет без остатка делится на 3200000, получаем Infinity, что делать не знаю... выручайте :help: |
Конечно же, тут не надо вычислять факториал и проверять его делимость :)
надо разложить делитель на простые множители. посмотреть степени этих множителей. от этого строить искомое число. например, если у нас число 18. Это 2 * 3^2. здесь ответ будет 6 (6! делится на 18). а почему? да потому, что в произведении 1*2*3*4*5*6 встретится и двойка, и обе тройки (в числах 3 и 6). В общем, как-то так. другое дело, насколько это будет быстро. Оную операцию надо проделать 100000 раз. Раскладывание на простые множители - не такая простая вещь. Потому тут надо что-то ещё думать. |
Часовой пояс GMT +3, время: 01:50. |