""" project euler problem 119 512 という数は興味深い数である. というのも, 各桁の和を何乗かしたものに等しくなっているからである: 5 + 1 + 2 = 8, 8^3 = 512 である. この特性を持つ他の数は例えば 614656 = 28^4 である. この数列の第 n 項を a_n と定義し, また 2 桁以上であるとしよう. a_2 = 512, a_10 = 614656 となる. a_30 を求めよ. """ import time import Euler time1 = time.time() lis = [] i = 9 while len(lis) < 31: i += 1 if Euler.primecheck(i): continue j = 1 while True: j += 1 if (Euler.sum_numbers_expo(i, 1)) ** j == i: lis.append(i) print(i) break if (Euler.sum_numbers_expo(i, 1)) ** j > i: break print(lis[-1]) print('{} seconds'.format(time.time() - time1))
#!/usr/bin/env python # -*- coding: utf-8 -*- """ project euler problem 171 正の整数nについて、f(n)を各桁の数字(10進数)の平方の和と定義する。例えば、 f(3) = 3^2 = 9, f(25) = 2^2 + 5^2 = 4 + 25 = 29, f(442) = 4^2 + 4^2 + 2^2 = 16 + 16 + 4 = 36 0 < n < 10^20について、f(n)が平方数となるようなnの和の末尾9桁を求めよ。 """ import time import math import Euler time1 = time.time() sums = 0 i = 0 while i < 10 ** 20: i += 1 if math.sqrt(Euler.sum_numbers_expo(i, 2)) % 1 == 0: sums += i print(sums % 1000000000) print(time.time() - time1, "seconds")