Если вы ищете более эффективный способ найти идеальные числа, вы можете прочитать страницу в Википедии о идеальных числах . В нем вы найдете, что не существует известных нечетных совершенных чисел (и, используя свой метод, вы не найдете их) и что все четные совершенные числа имеют вид:
2^(p - 1)*(2^p - 1)
, где 2^p - 1
- простое число и, следовательно, p
- простое число. Таким образом, если вы хотите найти даже совершенные числа, проверьте простоту 2^p - 1
для всех простых чисел p
, если так, то 2^(p - 1)*(2^p - 1)
идеально.
Если вы просто хотите найти несколько маленьких совершенных чисел с помощью простого цикла, вы можете сделать свой подход более эффективным, отметив, что если i
делит num
, то и num / i
. То есть вам нужно только зациклить до квадратного корня из num
и добавить пары i
и num / i
в sum
. Обратите внимание, что если num
- квадрат, корень квадратный из num
должен быть добавлен только один раз.
Обратите внимание, что если вы вычислите sum
таким образом, для совершенных чисел его значение будет 2 * num
, а не num
.