INFO FEUILLE n°2 ALGORITHME avec Python
-------------------------------------------------------------------------------------------------
COURS
Thème :
• float(a)/b permet avec le module decimal d'avoir a / b comme
nombre décimal .
Par exemple
float(11)/2 donne 5.5
Avant le début du programme écrire:
from decimal import* pour appeler le module
• for i in range( 1,n+1): veut dire " pour i entier allant de 1 à n "
b=int(input("Entrez un entier : ")) veut dire que l'on saisit un entier
if Condition: Cela veut dire Si Condition:
alors .....
.......
else: ..... cela veut dire Sinon
....
** Le double astérisque remplace ^
Ainsi:
par exemple: x2 s'écrit x**2
* Un seul astérix mis entre deux réels est la croix x de la multiplication.
--------------------------------------------------------------------------------------------------------------------------
EXERCICE1 :
Donner un algorithme qui donne
la somme des n premiers entiers naturels: 1 + ....... + n
n étant un entier naturel non nul.
-------------------------------------------------------------------------------------------------
REPONSE:
Il y a au moins trois façon de procéder:
1. Avec une boucle
for i in range( 1,n+1):
2. Avec la formule qui donne la somme des n premiers termes
d'une suite arithmétique de premier terme 1 et de raison 1
3. Avec un" tant que"
while i <n+1:
•Première méthode:
On peut envisager:
def test():
n=input("jusqu'à quel rang voulez-vous calculer ? ")
s=0
for i in range(1,n+1):
# attention range(1,n+1) donne i =1,2,3,...,n
s=s+i
print("1+...+"),(i),"=",(s)
# Avec Python 2.5 ou 2.7 on peut mettre print "1+...+",i,"=",s sans parenthèses.
# En alignant le p de print avec le f de for on obtient la dernière étape
----------------------------------------------------
On obtient par exemple:
>>> test()
jusqu'à quel rang voulez-vous calculer ? 10
1+...+ 1 = 1
1+...+ 2 = 3
1+...+ 3 = 6
1+...+ 4 = 10
1+...+ 5 = 15
1+...+ 6 = 21
1+...+ 7 = 28
1+...+ 8 = 36
1+...+ 9 = 45
1+...+ 10 = 55
>>>
•Seconde méthode avec une formule:
Soit n un entier naturel non nul:
Le problème c'est que Python 2.7 ne reconnait pas
la division décimale ordinaire
Il faut donc faire appel à un module complémentaire: décimal
from decimal import*
def somme():
n=input("Donner le dernier entier non nul de la somme : n = ")
s=(float(1+n)/2)*n
print s
Cela donne par exemple:
>>> somme()
Donner le dernier entier non nul de la somme : n = 10
55.0
>>>
• Troisième méthode en utilisant while au lieu de for
def SOMME():
n=input("Donner le dernier entier non nul de la somme: n = ")
S=0
i = 0
while i<n + 1:
S=S+i
print "0+...+" , i ,"=",S
i=i+1
# while oblige à initialiser i en mettant avant i = 0
# De plus il faut le compteur i = i + 1
# avec une boucle for il suffit d'initialiser S en mettant S = 0 avant
-----------------------
On obtient par exemple:
>>> SOMME()
Donner le dernier entier non nul de la somme: n = 7
0+...+ 1 = 1
0+...+ 2 = 3
0+...+ 3 = 6
0+...+ 4 = 10
0+...+ 5 = 15
0+...+ 6 = 21
0+...+ 7 = 28
-----------------------------------------------------------------------------------------------------------------
EXERCICE 2 :
Carrés successifs
Le but est de calculer les p carrés successifs des carrés d'un
entier naturel n : n2 , ( n2 )2 , ( ( n2 )2 )2 , ... etc
c-à-d
n2 , n2 × 2 , n2 × 2 × 2 , ...... ,
--------------------------------------------------------------------------------------------------------
REPONSE:
Première recherche:
Obtenir la liste des carrés des entiers de proche en proche.
le"carré de n", puis le carré du"carré de n" , ainsi de suite...
def test():
n=input("Entrez un nombre entier n: n = ")
p=input("Entrez le nombre de carrés successifs à calculer : p = ")
for x in range(1,p+1):
#attention for x in range(1,p+1) donne x =1,3,...,p
n=n**2
print " "
print(n)
----------------------------
Pour le faire tourner .
REMARQUE: Autre interprétation
Pour avoir la SOMME des termes de la forme 2^(2k) de k =1 à k =p
Voici un algorithme:
def somcarre():
n=input("Entrer un entier naturel non nul ")
p=input("Entrer un entier naturel non nul ")
S=0
for k in range(1,p+1):
S=S+(n**(2*k))
print (" la somme"),n,"^(2*1)+ ...+ ",n,"^(2*",p,")"," =",S
Par exemple:
>>> somcarre()
Entrer un entier naturel non nul 2
Entrer un entier naturel non nul 3
la somme 2 ^(2*1)+ ...+ 2 ^(2* 3 ) = 84
>>>
-----------------------------------------------------------------------------------------------------------
EXERCICE 3 :
Diviseurs d'un entier
Soit n un entier naturel non nul.
Le but est de faire afficher tous les diviseurs de n.
----------------------------------------------------------------------------------------------------------
REPONSE:
def diw(x):
n=input("Entrez un nombre entier naturel non nul : ")
for x in range(1,n+1):
if n%x==0:
# n%x est le reste de la division de n par x
# Si le reste de la division de n par x est 0 alors x divise n
print( "il y a comme diviseur: " ),(x)
# On peut suprimer les parenthèses en disant, print "il y a comme diviseur: " ,x
# Attention après deux points se décaler de trois blanc à la ligne
Pour le faire tourner:
>>> diw(1)
Entrez un nombre entier naturel non nul : 15
il y a comme diviseur: 1
il y a comme diviseur: 3
il y a comme diviseur: 5
il y a comme diviseur: 15
>>>
----------------------------------------------------------------------------------------