Evgeniy
потом я ввожу число за пределами int64
Evgeniy
так я к тому что оценить человека можно потому какие он вопросы задает
Evgeniy
и как реализует
Evgeniy
и как учитывает новую информацию (уточнения)
Evgeniy
и что иногда этими уточнениями можно не хило человеку переписывать
Evgeniy
да банально даже сделает ли человек проверку на -25
Evgeniy
если число введено отрицательное
Алексей
если только очень далеко за пределами int64
Evgeniy
вот из таких мелочей можно и узнать уровень человека
Алексей
не. на саомо деле есть признаки делимости
Evgeniy
потому что там очень много операций деления и очень много поиска простых чисел
Evgeniy
на тему простых чисел
Evgeniy
суть в том что этот алгоритм выглядит вот так
Evgeniy
надо в начале в цикле перебрать все числа от 2 до n/2 и искать простые числа
Evgeniy
потом зная простые числа надо пытаться разложить на множители подставляя разные комбинации
Алексей
нахрена все то?
Алексей
а почему бы по ходу дела не проверять
Evgeniy
это к тому что собеседование и если человек не хочет писать код и ссылается на готовые штуки
Evgeniy
то вот я привел пример задачи где готовой штуки нету
Evgeniy
верней если даже они и есть всегда можно сделать чтобы они подвисли
Алексей
ну.. другое дело она не практическая
Evgeniy
и спросить человека а что это оно висит
Evgeniy
и ему придется лесть во внутренности
Evgeniy
так практическая задача по разработке портала займет около 8ч
Evgeniy
твоего времени
Evgeniy
а задачка вот с таким алгоритмом минут 15
Evgeniy
чтобы понять уровень программиста
Evgeniy
вот поэтому и берут простые задачи а не разработки крупных проектов которые практически более целесообразные
Evgeniy
это к вопросу о практичесности
Evgeniy
и применимости
Evgeniy
до тех пор пока такая задача не решена алгоритм rsa надежен
Алексей
ну смотри. задача сводится к поиску наименьшего делителя.. (для проверки)
Evgeniy
так фишка в том что может быть число 29 например
Evgeniy
29 = 5х5 + 2х2
Алексей
потому 1. если число заканчивается на 0,2,4,6,8 то оно не простое и делится :) уже убрали половину операция
Evgeniy
той половины что осталось хватит на долго
Evgeniy
ты убрал не половину операций
Evgeniy
а рассмотрел частный случай если число четное
Алексей
если сумма чисел делиться на 3 - число делиться на 3
Evgeniy
но если оно не четное то все операции остануться на месте
Evgeniy
пример тебе 29
Evgeniy
я знаю
Evgeniy
потому что это задача с заебом
Evgeniy
и если человек юзает готовые решения
Алексей
точно так же и если делится на 3
Evgeniy
вот на этой задаче он прикурит
Алексей
тогда считать в 3 раза меньше :))
Алексей
ну и т.д
Evgeniy
Evgeniy
потому что есть теорема что любое не простое число может быть разложенно на простые множители
Алексей
ну да
Evgeniy
и ты потом человека подводишь к этому
Evgeniy
и требуешь разложения на простые множители
Evgeniy
и вот твой вариант с четностью идет в помойку
Evgeniy
как и сумма чисел числа если делиться на 3
Evgeniy
я говорю что эта задача с подвохом)
Evgeniy
и исходя из уровня знаний человека
Алексей
ну если не срабатываю признаки делимости на 2, 3, 5, то скорее всего число простое :))
Evgeniy
но опять же не всегда)
Алексей
https://ru.wikipedia.org/wiki/%D0%A7%D0%B8%D1%81%D0%BB%D0%BE_%D0%9C%D0%B5%D1%80%D1%81%D0%B5%D0%BD%D0%BD%D0%B0#%D0%9F%D1%80%D0%BE%D1%81%D1%82%D0%BE%D0%B5_%D1%87%D0%B8%D1%81%D0%BB%D0%BE_%D0%9C%D0%B5%D1%80%D1%81%D0%B5%D0%BD%D0%BD%D0%B0
Evgeniy
Evgeniy
не простое и не делиться на те числа что ты написал
Алексей
Свойство числа быть простым называется простотой. Простой, но медленный метод проверки простоты заданного числа n известен как перебор делителей. Он состоит из проверки того, является ли {\displaystyle n} n кратным целому числу от {\displaystyle 2} 2 до {\displaystyle {\sqrt {n}}} {\sqrt {n}}
Алексей
это если в лоб
Алексей
а вот это юзают обычно https://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D1%81%D1%82_%D0%90%D0%B3%D1%80%D0%B0%D0%B2%D0%B0%D0%BB%D0%B0_%E2%80%94_%D0%9A%D0%B0%D1%8F%D0%BB%D0%B0_%E2%80%94_%D0%A1%D0%B0%D0%BA%D1%81%D0%B5%D0%BD%D1%8B
Evgeniy
существуют точные и вероятностные алгоритмы
Evgeniy
и суть в том что на собеседование если человек что то подобное сразу говорит
Evgeniy
это значит что у него скорей всего хороший математический бэкграунд
Алексей
ну просто ты сказал чтто сложность вычисления n/2
Evgeniy
не говорил я такова)))
Алексей
я с этим не согласился
Алексей
Evgeniy
так этот n/2 это только первый шаг по поиску простых чисел
Алексей
а я говорю что нифига не так :)
Evgeniy
потом надо еще переборы делать для каждого простого числа
Evgeniy
потом когда ты узнал простые числа надо проверить входное число что не простое