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