In [6]:
def tab():
impairs = []
i = 1
for k in range(0, 100):
impairs.append(i)
i = i + 2
return impairs
In [7]:
t = tab()
print (t)
In [9]:
def tab2():
impairs = []
i = 1
while i < 200:
impairs.append(i)
i = i + 2
return impairs
In [10]:
t = tab2()
print (t)
In [11]:
def tab3():
impairs = []
for i in range(1, 200, 2):
impairs.append(i)
return impairs
In [12]:
t = tab3()
print (t)
In [15]:
def tab4():
return [i for i in range(1, 200, 2)]
In [16]:
t = tab4()
print (t)
In [22]:
def fib():
"""Retourne la liste des 100 premiers termes de Fibonacci"""
a, b = 0, 1
list_fibo = []
while len(list_fibo) < 100:
list_fibo.append(b)
a, b = b, a+b
return list_fibo
In [23]:
f = fib()
print (f)
In [24]:
def fib_multiple7(n):
"""Retourne la liste des n premiers termes de Fibonacci
qui sont des multiples de 7"""
a, b = 0, 1
list_fibo = []
while len(list_fibo) < n:
if b % 7 == 0:
list_fibo.append(b)
a, b = b, a+b
return list_fibo
In [25]:
f7 = fib_multiple7(10)
print (f7)
In [3]:
ma_liste = []
ma_liste.append(2)
Out[3]:
In [8]:
def diviseurs(i):
"""retourne la liste des diviseurs de l'entier i"""
tab_div = []
tab_div.append(1)
for d in range(2, i+1):
if i % d == 0:
tab_div.append(d)
return tab_div
In [1]:
def diviseurs(i):
"""retourne la liste des diviseurs de l'entier i"""
if i == 1: return []
tab_div = []
tab_div.append(1)
for d in range(2, i//2+1):
if i % d == 0:
tab_div.append(d)
tab_div.append(i)
return tab_div
In [9]:
print ("diviseurs de 10: ", diviseurs(10))
print ("diviseurs de 30: ", diviseurs(30))
print ("diviseurs de 11: ", diviseurs(11))
print ("diviseurs de 1: ", diviseurs(1))
In [10]:
def est_premier(i):
"""teste si l'entier i est premier"""
tab_div = diviseurs (i)
if len(tab_div) == 2: return True
else: return False
In [13]:
def est_premier(i):
"""teste si l'entier i est premier"""
return len(diviseurs (i)) == 2
In [12]:
print ("7 est premier ?", est_premier(7))
print ("11 est premier ?", est_premier(11))
print ("20 est premier ?", est_premier(20))
print ("1 est premier ?", est_premier(1))
In [11]:
def liste_premiers(n):
"""retourne la liste des nombres premiers strictement inférieur à n"""
tab_premiers = []
for i in range(1, n):
if est_premier(i):
tab_premiers.append(i)
return tab_premiers
In [15]:
print (liste_premiers(100))
In [17]:
%timeit liste_premiers(100)
In [2]:
def liste_parfait(n):
"""retourne la liste des n premiers nombres parfaits"""
parfait_tab = list()
nombre = 6
while len(parfait_tab) < n:
d = diviseurs(nombre)
somme = 0
for i in range(len(d)-1):
somme += d[i]
if somme == nombre: parfait_tab.append(nombre)
nombre += 1
return parfait_tab
In [5]:
lp = liste_parfait(4)
for parfait in lp:
print (parfait, ':', diviseurs(parfait))
In [9]:
def crible(n):
"""retourne les n premiers nombres premiers par la méthode d'Eratosthène"""
premiers = list()
non_premiers = list()
for i in range (2, n+1):
if i in non_premiers:
continue
else:
premiers.append(i)
m = 2
while i * m <= n:
non_premiers.append(i * m)
m += 1
return premiers
In [15]:
print (crible(10))
print (liste_premiers(10))
In [16]:
%timeit crible(100)
In [17]:
%timeit liste_premiers(100)
In [8]:
liste = [2, 3, 5, 7, 3, 3]
3 in liste
Out[8]:
In [17]:
def crible_premiers(n):
"""retourne la liste des nombres premiers inférieurs à n"""
nombres = list()
for i in range(n+1):
nombres.append(i)
# équivalent à nombres = [i for i in range(n+1)]
masque = list()
for i in range(n+1):
if i == 0 or i == 1:
masque.append(False) # 0 et 1 ne sont pas premiers
else:
masque.append(True) # pour le reste on ne sait pas encore
# équivalent à
# masque = [False if i == 0 or i == 1 else True for i in range(n+1)]
for p in nombres:
if masque[p] == True: # C'est un nombre premier
# on masque les multiples du nombre
m = 2
while p * m <= n:
masque[p * m] = False
m = m + 1
premiers = list()
for p in nombres:
if masque[p] == True:
premiers.append(p)
return premiers
In [18]:
l = crible_premiers(10)
print (l)
In [23]:
def crible_premiers2(n):
"""retourne la liste des nombres premiers inférieurs à n"""
nombres = list()
for i in range(n+1):
nombres.append(i)
masque = [False, False]
for i in range(2, n+1):
masque.append(True)
# équivalent à
# masque = [False if i == 0 or i == 1 else True for i in range(n+1)]
premiers = list()
for p in nombres:
if masque[p] == True: # C'est un nombre premier
premiers.append(p)
# on masque les multiples du nombre
m = 2
while p * m <= n:
masque[p * m] = False
m = m + 1
return premiers
In [24]:
l = crible_premiers2(10)
print (l)
In [28]:
%timeit crible_premiers(1000)
In [27]:
%timeit crible_premiers2(1000)
In [53]:
def crible_premiers3(n):
"""retourne la liste des nombres premiers inférieurs à n"""
premiers = set(range(2, n))
nombres = [i for i in range(n+1)]
for i in nombres:
if i in premiers:
# on supprime les multiples du nombre
m = 2
while i * m <= n:
if i*m in premiers:
premiers.remove(i*m)
m = m + 1
return list(premiers)
In [54]:
nombres = set(range(2, 11))
print(nombres)
nombres.remove(4)
print(nombres)
In [55]:
crible_premiers3(10)
Out[55]:
In [56]:
%timeit crible_premiers3(1000)
In [ ]: