Проголосовало
9 чел
Варианты ответов
АндрейВысший разум (472484)
1 день назад
Второй вариант ужасен, т.к. в нём Math.sqrt(n) заново вычисляется на каждой итерации цикла. А это совсем не быстрая операция. И сам цикл делает вдвое больше итераций, чем требуется. Никакой эффективности в помине нет.
Первый же вариант ошибочен, т.к. n == 2 он НЕ считает простым числом. Если это исправить, первый вариант будет многократно лучше.
ПапаВысший разум (148310)
1 день назад
Оба хуже.
По асимптотической сложности - одинаково неэффективно.
За вот такое на каждой итерации цикла в серьёзных проектах по рукам дают: i<=Math.sqrt(n)
Об ошибке в checkPrime тебе уже сказали.
Многократная проверка чисел на простоту делается либо решетом Эратосфена, либо, как минимум, предварительным расчётом простых делителей. Каждый раз перебирать все нечётные числа - сгодится разве что одноразовой домашки для учителя из тех, кто задают суммировать арифметическую прогрессию циклом.
Ivan IvanovМастер (2282)
1 день назад
В плане читаемости оба плохи, хотя первый лучше. Хотя это ему не поможет. А добиваться эффективности в яваскрипте такое себе занятие.
больше не чат гпт ????Мыслитель (8810)
12 часов назад
новая которая на сайте o3-mini? на самом деле это немного урезанная версия, есть платная o3-mini high, говорит что, типо, первый вариант немного ошибочный, но если исправить ошибку то норм, а второй не очень эффективный из-за цикличного перебора, но, мол, для типичных входных данных (как в задачах типа Codewars) разница несущественна. по итогу он сказал что лучше всё же первый если доработать, ну а второй разве что просто красивее выглядит
Пример №1 Пример №2