1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def legendre(n,p):
v = 0
q = p
while q<=n:
v += n//q
q *= p
return v
def methode_pas_top(n): # en O(n)
p2 = legendre(n,2) - legendre(n,5)
k = pow(2,p2,10) # 2^p2 mod 10
for i in range(2,n+1):
for p in [2,5]:
while i%p==0:
i //= p
k = (k*i)%10
return k
for i in range(2,7):
print('10^%d! se termine par %d puis %d zéros' % (i,methode_pas_top(10**i),legendre(10**i,5)))