Partage
  • Partager sur Facebook
  • Partager sur Twitter

compréhension d'un algorithme

python

Sujet résolu
3 avril 2022 à 18:27:09

Bonjour ,

je ne comprends pas à quoi correspond le n*(n+1)*(n+2) : 

N'hésitez pas à m'aider !^^

Supposons qu'on veuille trouver la plus petite valeur de n telle que n(n+1)(n+2) dépasse un million. Ici on ne peut pas utiliser la boucle for puisqu'on ne saurait pas a priori quoi mettre dans range (Si on savait, on aurait la réponse au problème et donc pas besoin de faire de programme...). Voyons un exemple de code qui répond à notre problème

n = 0

while n*(n+1)*(n+2) < 1000000 :

  n+=1

print(n)

Notre programme commence avec n=0 puis tant que le calcul de n*(n+1)*(n+2) ne dépasse pas un million, on augmente n de 1 pour tester de nouveau si n*(n+1)*(n+2) ne dépasse pas un million etc. Dés que n*(n+1)*(n+2) dépasse un million, la boucle s'arrête et on affiche la valeur de n qui sera forcément la première telle que n*(n+1)*(n+2) dépasse un million.

-
Edité par Etourdinette 3 avril 2022 à 18:29:45

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
3 avril 2022 à 20:59:09

Bonjour,

C'est la base de la programmation là quand même... Tant que n * (n+1)  * (n+2) est inférieur à 1 million alors rajouter 1 à n...

Pensez aussi à utiliser la balise Code </>

Essayez ceci si vous voulez voir ce que ça donne :

>>> n = 1
>>> while n*(n+1)*(n+2) < 1000000:
	print(n, n*(n+1)*(n+2))
	n+=1



  • Partager sur Facebook
  • Partager sur Twitter
4 avril 2022 à 2:08:38

On a grossièrement quelque chose de l'ordre de n**3 et la racine cubique de 1000000 est 100.
On pourrait commencer un peu avant 100.
>>> 99*100*101                                                                                                          
999900                                                                                                                  
>>> n=97                                                                                                                
>>> while n*(n+1)*(n+2) < 1000000:                                                                                      
...  n+=1                                                                                                               
...                                                                                                                     
>>> n                                                                                                                   
100                                                                                                                     
>>>
On peut chercher avec des moyens plus rapides comme la recherche dichotomique, mais c'est plus compliqué.
  • Partager sur Facebook
  • Partager sur Twitter

Le Tout est souvent plus grand que la somme de ses parties.

4 avril 2022 à 9:38:04

PierrotLeFou a écrit:

On a grossièrement quelque chose de l'ordre de n**3 et la racine cubique de 1000000 est 100.
On pourrait commencer un peu avant 100.
>>> 99*100*101                                                                                                          
999900                                                                                                                  
>>> n=97                                                                                                                
>>> while n*(n+1)*(n+2) < 1000000:                                                                                      
...  n+=1                                                                                                               
...                                                                                                                     
>>> n                                                                                                                   
100                                                                                                                     
>>>
On peut chercher avec des moyens plus rapides comme la recherche dichotomique, mais c'est plus compliqué.

Merci pour ta réponse !



  • Partager sur Facebook
  • Partager sur Twitter