|
发表于 2020-10-17 11:29:15
|
显示全部楼层
- '''计算小于10000的所有亲和数之和'''
- def amicable(num):
- sum = 0
- Amicable = {}
- AMICABLE = []
- AMI = {}
- for number in range(1,num):
- factsum = 0
- for factors in range(1,int(number/2)+1):
- if number % factors == 0:
- factsum += factors
- Amicable[number] = factsum
- for i in range(1,len(Amicable)):
- for j in range(1,len(Amicable)):
- if Amicable[i] == j and Amicable[j] == i and i != j:
- AMICABLE.append(i)
- AMICABLE.append(j)
- AMICABLE = list(set(AMICABLE))
- print("在%d以下的亲和数为:" %num)
- print(AMICABLE)
- for numbers in AMICABLE:
- AMI[numbers] = Amicable[numbers]
- sum += numbers
- print("它们分别的因数和为:")
- print(AMI)
- print("它们的因数总和为:%d" %sum)
- start_amicable = time.time()
- amicable(10000)
- time_amicable = time.time() - start_amicable
- print("%f秒" %time_amicable)
复制代码
在10000以下的亲和数为:
[1184, 6368, 5564, 5020, 2924, 284, 6232, 1210, 220, 2620]
它们分别的因数和为:
{1184: 1210, 6368: 6232, 5564: 5020, 5020: 5564, 2924: 2620, 284: 220, 6232: 6368, 1210: 1184, 220: 284, 2620: 2924}
它们的因数总和为:31626
7.503518秒 |
|