Bienvenue sur Laurentvidal.fr, le site où vous trouverez des réponses rapides et précises à toutes vos questions. Explorez des milliers de questions et réponses fournies par une communauté d'experts sur notre plateforme conviviale. Découvrez une mine de connaissances de professionnels dans différentes disciplines sur notre plateforme conviviale de questions-réponses.
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 nos réponses vous ont été utiles. Revenez quand vous voulez pour obtenir plus d'informations et de réponses à vos questions. Nous apprécions votre visite. Notre plateforme est toujours là pour offrir des réponses précises et fiables. Revenez quand vous voulez. Visitez toujours Laurentvidal.fr pour obtenir de nouvelles et fiables réponses de nos experts.