Python is frustratingly weird with equality checks
This commit is contained in:
47
21/main.py
Normal file
47
21/main.py
Normal 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()
|
||||||
Reference in New Issue
Block a user