示例#1
0
"""
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))
示例#2
0
#!/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")