Вот решение, с учетом духа [Проекта] Эйлера. [Предупреждение: спойлер . Я старался держать подсказки медленными, чтобы вы могли прочитать только часть ответа и думать самостоятельно, если хотите. :)]
Когда вы сталкиваетесь с проблемой, связанной с числами, одна из хороших стратегий (как вы, вероятно, уже знаете из решения 210 задач Project Euler) - это посмотреть на маленькие примеры, найти образец и доказать его. [Последняя часть может быть необязательной в зависимости от вашего отношения к математике; -)]
В этой задаче, хотя, глядя на небольшие примеры - для n = 1,2,3,4, ..., вероятно, не даст вам никакой подсказки. Но при работе с теоретико-числовыми задачами есть еще один смысл «небольших примеров», о которых вы, вероятно, уже знаете - простые числа являются строительными блоками натуральных чисел, поэтому начните с простых.
Для простого числа p его единственными делителями являются 1 и p, поэтому сумма квадратов его делителей равна 1 + p 2 .
Для простой степени p k ее единственными делителями являются 1, p, p 2 , & hellip; p k , поэтому сумма квадратов его делителей равна 1 + p + p 2 + & hellip; + p k = (p k + 1 * +1022 * -1) / (р-1).
Это был самый простой случай: вы решили задачу для всех чисел только с одним простым множителем.
Пока ничего особенного. Теперь предположим, что у вас есть число n, которое имеет два простых множителей, скажем, n = pq. Тогда его множители равны 1, p, q и pq, поэтому сумма квадратов его делителей равна 1 + p 2 + q 2 + p 2 д 2 * 1 034 * = (1 + р 2 * +1036 *) (1 + д 2 ).
Как насчет n = p a q b ? Какова сумма квадратов ее факторов?
[............................ Читать ниже этой строки опасно ............ .......]
Это & sum; 0 & le; c & le; a, 0 & le; d & le; b (p c q d ) 2 = ((р * * а тысяча пятьдесят пять + 1 -1) / (р-1)) ((д Ь + 1 * 1 058 * -1) / (Q-1)).
Это должно дать вам подсказку, как относительно того, что ответ, так и как доказать это: сумма делителей n просто произведение (ответа) для каждой из главных степеней в ее факторизации, так что все вам нужно сделать, чтобы разложить 64000000 (что очень легко сделать даже в своей голове :-)) и умножить ответ для каждого (= оба, потому что единственными простыми числами являются 2 и 5) его простых степеней.
Это решает проблему проекта Эйлера; теперь мораль от этого отнять.
Более общий факт здесь о мультипликативных функциях - функциях на натуральных числах, таких что f (mn) = f (m) f (n) всякий раз, когда gcd (m, n) = 1, т. е. m и n не имеют общих общих факторов. Если у вас есть такая функция, значение функции в определенном числе полностью определяется ее значениями в простых степенях (вы можете доказать это?)
Немного более сложный факт, который вы можете попытаться доказать (это не , что сложно), заключается в следующем: если у вас есть мультипликативная функция f [здесь, f (n) = n 2 ] и вы определяете функцию F как F (n) = & sum; d делит n f (d), (как это и было здесь), тогда F (n) также является мультипликативной функцией.
[На самом деле что-то очень красивое - правда, но пока не смотрите на это, и вам, вероятно, это никогда не понадобится. : -)]