Если вам нужно обрабатывать числа, превышающие 2 000 000, то это не правильный способ решения проблемы. Существует много алгоритмов для определения того, является ли число простым, и существует компромисс между сложностью алгоритма и эффективностью для больших чисел. Чтобы узнать, какой алгоритм подходит для вашего варианта использования, нам нужно знать, каков ваш вариант использования. (Похоже, вы пытаетесь решить данную проблему с помощью курса или кода).
Но даже с помощью используемого вами алгоритма есть простые способы ускорить его. С одной стороны, в цикле в isPrime
, когда number % i === 0
, вы должны return false
вместо того, чтобы увеличивать переменную и проверять ее позже. Это изменение само по себе должно значительно ускорить вашу программу, потому что большинство чисел имеют небольшие делители, и поэтому большинство чисел будет выполнять этот цикл только несколько раз.
Еще одно простое ускорение - ограничить количество циклов. Вы перебираете все числа от 2 до n. Но чтобы проверить, является ли число простым, вам нужно только проверить его делимость на простые числа. Если ваша цель состоит в том, чтобы вычислить сумму первых, скольких простых чисел, то это легко: составьте список простых чисел, сравнивая каждого нового кандидата с числами, уже имеющимися в вашем списке. Я сильно подозреваю, что этот подход будет более чем достаточно быстрым для ваших нужд.