Question:codility Lesson11 CountNonDivisible
def solution(A):
maxA = max(A)
lenA = len(A)
cnt = {}
for ele in A:
if ele not in cnt:
cnt[ele] = 1
else:
cnt[ele] += 1
divisors = {}
for ele in A:
divisors[ele] = set([1,ele])
div = 2
while div * div <= maxA:
multiple = div
while multiple <= maxA:
if multiple in divisors and not div in divisors[multiple]:
divisors[multiple].add(div)
divisors[multiple].add(multiple // div)
multiple += div
div += 1
#print(divisors)
res = []
for ele in A:
res.append(lenA - sum([cnt.get(div,0) for div in divisors[ele]]))
return res