Size: a a a

2020 December 11

SK

Simon Khaskelberg in pro.elixir
Aaron Delarge
Я проверял, есть ли для него делители в диапазоне [2 .. number/2], но подозреваю что есть более быстрые способы
Простой вариант: Идёшь до корня, делишь на текущее число пока можешь. Если после этого в остатке 1, то твой максимальный делитель - самое большое простой число. Если нет - то то что осталось
источник

SK

Simon Khaskelberg in pro.elixir
Ну и можно заранее поделить на 2 пока можешь и бежать только по нечётным
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Mikhail Spiridonov
чтобы найти наибольший простой делитель(X) числа (A) достаточно найти наименьший простой делитель(Y) тогда X = A/Y

проверять делители имеет смысл от 1 до корня из А
Нет конечно, X может быть не простым. Например число 8
источник

MS

Mikhail Spiridonov in pro.elixir
Źmićer Rubinštejn
Нет конечно, X может быть не простым. Например число 8
Уговорил)
источник

AD

Aaron Delarge in pro.elixir
Всё же интересно, почему дефолтный вариант с N2 сложностью падает по таймауту. Машина эрланга не любит долгие вычисления?
источник

SK

Simon Khaskelberg in pro.elixir
Ну если у тебя число триллион, то почему бы не упасть по тайм-аут
источник

SK

Simon Khaskelberg in pro.elixir
Хотя подожди, у тебя падает сама программа, или когда ты ее сдаешь
источник

AD

Aaron Delarge in pro.elixir
При вычислении, к примеру, 13195, результат нормально возвращается. При вычислении 600851475143 получаю :elixir_ls_expression_timeout
источник

LL

Lama Lover in pro.elixir
Aaron Delarge
Всё же интересно, почему дефолтный вариант с N2 сложностью падает по таймауту. Машина эрланга не любит долгие вычисления?
Ну N/2 это 10^12 (если правильно количество чисел посчитал) вариантов перебрать
Компьютер умеет 10^9 в секунду
Значит тебе нужно было 1000 секунд, что есть примерно 20 минут
источник

AD

Aaron Delarge in pro.elixir
Lama Lover
Ну N/2 это 10^12 (если правильно количество чисел посчитал) вариантов перебрать
Компьютер умеет 10^9 в секунду
Значит тебе нужно было 1000 секунд, что есть примерно 20 минут
Тогда понятно, я бы тоже лучше упал
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Aaron Delarge
При вычислении, к примеру, 13195, результат нормально возвращается. При вычислении 600851475143 получаю :elixir_ls_expression_timeout
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Какой нафик elixir ls
источник

SK

Simon Khaskelberg in pro.elixir
Aaron Delarge
При вычислении, к примеру, 13195, результат нормально возвращается. При вычислении 600851475143 получаю :elixir_ls_expression_timeout
А причем здесь elixir_ls
источник

LL

Lama Lover in pro.elixir
Вообще задача факторизации числа это NP-полная задача, так что тут всё не так просто
источник

SK

Simon Khaskelberg in pro.elixir
Как ты свой код запускаешь?
источник

AD

Aaron Delarge in pro.elixir
Simon Khaskelberg
А причем здесь elixir_ls
Ну я через вскод запускал с плагином, он так возвращает. Через iex просто ожидание долгое и падение задачи
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Aaron Delarge
Ну я через вскод запускал с плагином, он так возвращает. Через iex просто ожидание долгое и падение задачи
Долго ждёт а потом что?
источник

LL

Lama Lover in pro.elixir
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Вот 200 секунд считает, а потом?
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Я думал чекер падает с таймаутом
источник