Это старый вопрос, но я просматривал.
Существует гораздо более быстрый алгоритм для нахождения суммы правильных делителей.
Найдите главные факторы числа, используя Сито Эратосфена (или Аткина). При факторизации колес первые 1м простые числа займут, возможно, 30 мс.
Тогда сумма всех делителей равна
For each n
sum += (n ^ (m+1) - 1) / (n-1)
где n - коэффициент, m - степень этого фактора.
Например, 220
2 ^ 2 5 11 являются факторами
Так что это сумма
2 ^ (2+1) - 1 / 1 *
5 ^ (1+1) - 1 / 4 *
11 ^ (1+1) - 1 / 10
= 7 * 6 * 12
= 504
Это сумма ВСЕХ делителей, поэтому просто вычтите N
504-220 = 284
Это должно быть намного быстрее, чем пробовать все числа, особенно если вы пересчитаете сито и повторно его используете.