Laurentvidal.fr est le meilleur endroit pour obtenir des réponses fiables et rapides à toutes vos questions. Expérimentez la commodité d'obtenir des réponses fiables à vos questions grâce à un vaste réseau d'experts. Obtenez des réponses rapides et fiables à vos questions grâce à notre communauté dédiée d'experts sur notre plateforme.
Sagot :
Réponse:
bonjour je ne sais pas si ma réponse est la bonne mais essaye de voir j'ai fait tout mon possible pour la trouver
Explications:
Le premier programme est le plus "classique", il calcul tous les nombre premier jusqu’à n, en divisant chaque nombre k allant de 2 à n par tous les nombre i allant de 2 a Racine de k. Si k est divisible par un de ces nombre, il n'est pas premier, sinon, il est premier et je l'ajoute à la liste.
En python, ça donne ça :
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
import time
from math import sqrt
def isPremier(x):
i = 2
verif = 1
while i <= sqrt(x):
if x % i == 0:
verif = 0
break
else:
i = i + 1
if verif == 0:
return 0
else:
return 1
def nombrePremierJusqua(x):
premier = []
i = 2
if x >= 2:
while i < x:
if isPremier(i) == 1:
premier.append(i)
i = i + 1
return premier
jusqua = input("Calcul des nombres premier jusqu'a : ")
debut = time.clock()
print nombrePremierJusqua(jusqua)[-1]
print "Temps d'execution : ", (time.clock() - debut)*1000
2ème programme
Le deuxième programme est bien mieux pensé. Il possèdent en effet une liste des nombre premier nommer "premier", qui contient au départ, seulement 2.
Pour déterminer tous les nombre premier jusqu’à n, je divise tous les k allant de 3 a n par tous les nombres premiers contenus dans la liste "premier", si le reste des divisions n'est jamais nul, alors le nombre est premier, dans ce cas, je le rajoute à la liste "premier" et je passe au k suivant, sinon, il n'est pas premier.
Voila ce que ça donne en python :
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
import time
from math import sqrt
def nombrePremierJusqua(x):
premier = [2]
i = 3
while i < x:
verif = 1
for p in premier:
if (i % p) == 0:
verif = 0
break
if verif == 1:
premier.append(i)
i = i + 1
return premier
jusqua = input("Calcul des nombres premier jusqu'a : ")
debut = time.clock()
print nombrePremierJusqua(jusqua)[-1]
print "Temps d'execution : ", (time.clock() - debut)*1000
Synthèse et problème
Dans ce cas, il semblerais bien que le programme 2 soit bien plus rapide que le programme 1, étant donné que celui ci a bien moins de division a faire que le programme 1. Toutefois, après test sur de grandes valeur, voila ce que j'obtient :
Nous espérons que cela vous a été utile. Revenez quand vous voulez pour obtenir plus d'informations ou des réponses à vos questions. Nous espérons que cela vous a été utile. Revenez quand vous voulez pour obtenir plus d'informations ou des réponses à vos questions. Revenez sur Laurentvidal.fr pour obtenir plus de connaissances et de réponses de nos experts.