Python is frustratingly weird with equality checks

This commit is contained in:
2020-04-12 01:09:31 +02:00
parent 9741297006
commit 80a586037c

47
21/main.py Normal file
View File

@@ -0,0 +1,47 @@
import os
import math
import numpy as np
# Evaluate the sum all amicable numbers under 10000
# A pair of number is amicable if the sum of their proper divisors is equal
# to each other, they are then both called amicable numbers
def getDivs(n):
ds = [True] * math.ceil(n/2)
for i in range(1, len(ds)):
if ds[i] and n % (i+1) != 0:
j = i
while j < len(ds):
ds[j] = False
j = j + i + 1
res = []
for i in range(0, len(ds)):
if ds[i]:
res.append(i+1)
return res
def getSumDivs(n):
return sum(getDivs(n))
def main():
print("Hello, this is Patrick")
dsums = [getSumDivs(x) for x in range(1, 10001)]
res = 0
for i in range(len(dsums)):
di = dsums[i]
if (i+1) != di:
if di-1 < len(dsums):
if i+1 == dsums[di-1]:
res = res + i + 1
else:
dj = getSumDivs(di)
if i+1 == dj:
res = res + i + 1
print(res)
if __name__ == "__main__":
main()