码迷,mamicode.com
首页 > 编程语言 > 详细

欧拉计划(python) problem 21

时间:2015-01-31 12:14:43      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:

Amicable numbers

Problem 21

Let d(n) be defined as the sum of proper divisors of n (numbers less than n which divide evenly into n).
If d(a) = b and d(b) = a, where a ≠ b, then a and b are an amicable pair and each of a and b are called amicable numbers.

For example, the proper divisors of 220 are 1, 2, 4, 5, 10, 11, 20, 22, 44, 55 and 110; therefore d(220) = 284. The proper divisors of 284 are 1, 2, 4, 71 and 142; so d(284) = 220.

Evaluate the sum of all the amicable numbers under 10000.


Answer:
31626
Completed on Sat, 31 Jan 2015, 03:45

python code:

import math
sqrt=math.sqrt


def func(x):
    result=1
    k=int(sqrt(x))+1
    for i in range(2,k):
        if x%i==0 and i!=sqrt(x):
            result+=i+x/i
        else:
            if (x%i==0 and i==sqrt(x)):
                result+=i
    return result
result=0
for i in range(4,10001):
    k=func(i)
    if k!=i and func(k)==i:
        result+=i
print(result)

time : <1s

欧拉计划(python) problem 21

标签:

原文地址:http://blog.csdn.net/zhangzhengyi03539/article/details/43339903

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!