1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| def ttm_count(nblampes, nbenfants):
c = 0
for i in range(1, nblampes+1):
ci = 0
for j in range(1, nbenfants+1):
if i%j==0:
ci += 1
if ci%2!=0:
c += 1
return c
def ppcm_count(count, eleves):
def diviseurs(z, n):
ci = 0
for j in range(1, n+1):
if not(z % j):
ci += 1
return ci
def get_la(start, stop):
la = 0
for i in range(start, stop):
dv = diviseurs(i, eleves)
if dv % 2:
la += 1
if dv == eleves:
return i, la
return None, la
ppcm, la = get_la(1, count+1)
if not ppcm:
return la
q, r = divmod(count, ppcm)
ppcm, lr = get_la(1 + count - r, count + 1)
return lr + q * la
import time
t0 = time.clock()
print('count:', ttm_count(1000000000, 12))
print('elapsed:', time.clock() - t0)
t0 = time.clock()
print('count:', ppcm_count(1000000000, 12))
print('elapsed:', time.clock() - t0) |