Vous êtes sur la page 1sur 2

Fouad NAFIS Filière : MP/PSI/TSI

20 Janvier 2022 CPGE OMAR IBN ALKHATTAB MEKNES

Classiques des Concours d’Informatique (CNC et CF)

1. Quel est le plus grand entier non 8. Factorielle d’un entier n >= 0 (version
signé, que l’on peut coder sur n bits? itérative)
Avec n bits, on peut coder les entier naturel de 0 à
1 def Factorielle ( n ):
2n − 1 Donc le plus grand nombre entier est 2n − 1 2 P =1
3 for i in range (2 , n +1) :
2. Quel est le plus grand entier posi-
4 P = P * i
tif avec bit de signe, avec bit de
5 return P
signe que l’on peut coder sur n bits?
Avec n bits, on peut coder les entiers relatifs de −2n−1
à 2n−1 − 1 le plus grand entier positif donc est 2n−1 − 1 9. Factorielle d’un entier n >= 0 (version
récursive)
3. Somme des éléments d’une liste (Accès par in-
dice) 1 def Fact ( n ):
2 if n ==1 or n ==0:
1 def Somme ( L ): 3 return 1
2 S =0 4 return ( n )* Fact (n -1)
3 n = len ( L )
4 for i in range ( n ):
n!
5 S = S + L[i] 10. Coefficient binomial Cnp = p!(n−p)!
6 return S
1 def Binom (p , n ):
2 if not (0 <= p <= n ):
4. Somme des éléments d’une liste (Accès par 3 return 0
valeur) 4 return Fact ( n )//( Fact ( p )* Fact (n - p ))
1 def Somme ( L ):
2 S =0 11. Savoir si un entier n est un nombre premier ou
3 for x in L : non
4 S = S + x
5 return S 1 def estPremier ( n ):
2 for i in range (2 , n //2+1):
3 if n % i ==0:
5. Somme des diviseurs d’un entier n > 0 4 return False
1 def SommeDiviseurs ( n ): 5 return True
2 S =0
3 for i in range (1 , n +1):
12. Représentation binaire d’un entier naturel n
4 if n % i == 0:
sous forme d’une chaine
5 S = S + i
6 return S 1 def Binaire ( n ):
2 C=""
6. Moyenne des éléments d’une liste 3 while n !=0:
4 C = str ( n %2) + C
1 def Moy ( L ): 5 n = n //2
2 S = 0 6 return C
3 n = len ( L )
4 for x in L :
5 S = S + x 13. Représentation binaire d’un entier naturel n
6 return S / n sous forme d’une liste

1 def Binaire ( n ):
7. Valeur max des éléments d’une liste 2 C =[]
3 while n !=0:
1 def Max ( L ): 4 C . append ( str ( n %2))
2 m = L [0] 5 n = n //2
3 for x in L : 6 return C
4 if m < x :
5 m = x
6 return m 14. Différence de deux vecteurs représentés par
deux listes de même taille
Programmation Python 1 fouadnafis@gmail.com - 06.75.38.39.48
Fouad NAFIS Filière : MP/PSI/TSI

1 def Difference ( L1 , L2 ): 1 def echanger (L , i , j ):


2 L =[] 2 L[i], L[j] = L[j], L[i]
3 n = len ( L1 ) # ou n = len ( L2 )
4 for i in range ( n ):
5 L . append ( L1 [ i ] - L2 [ i ]) 21. Recherche dichotomique d’un élément dans
6 return L une liste triée (version itérative)
1 def recherche_dicho ( x , L ):
15. Produit scalaire de deux vecteurs représentés 2 a , b = 0 , len ( L ) -1
par deux listes de même taille 3 m = ( a + b )//2
4 while a < b :
1 def ProduitScalaire ( L1 , L2 ):
5 if L [ m ] == x :
2 S =0
6 return m
3 n = len ( L1 ) # ou n = len ( L2 )
7 elif L [ m ] > x :
4 for i in range ( n ):
8 b = m -1
5 S = S + L1 [ i ] * L2 [ i ]
9 else :
6 return S
10 a = m +1
11 m = ( a + b )//2
16. PGCD de deux entiers n > 0 et p > 0 avec 12 return False
l’algorithme d’Euclide itératif
1 def euclid1 (n , p ): 22. Recherche dichotomique d’un élément dans
2 while n % p !=0: une liste triée (version récursive)
3 n, p = p, n%p
4 return p 1 def rechDicho (x , L ):
2 if len ( L ) < 1 :
3 return False
17. PGCD de deux entiers n > 0 et p > 0 avec
4 m = len ( L )//2
l’algorithme d’Euclide récursif
5 if L [ m ] == x :
1 def euclid2 (n , p ): 6 return True
2 if n % p ==0 : 7 elif L [ m ] > x :
3 return p 8 return rechDicho (x , L [: m ])
4 return euclid2 (p , n % p ) 9 else :
10 return rechDicho (x , L [ m :])
18. Recherche naı̈ve d’un élément dans une liste
1 def rechercher (x , L ): 23. Résoudre le problème de Cauchy défini par :
2 return x in L  ′
3 # in est un op é rateur bool é en y = F (t, y(t))
y(t0 ) = y0
19. Recherche naı̈ve d’un élément dans une liste Avec la méthode d’Euler explicite version
(version itérative) pédagogique
1 def rechercher (x , L ): 1 def Euler (F , t0 , tf , y0 , n ) :
2 n = len ( L ) 2 h = ( tf - t0 )/ n
3 for y in L : 3 T = [ t0 ]
4 if y == x : 4 Y = [ y0 ]
5 return True 5 for i in range (n -1) :
6 return False 6 T . append ( T [ i ]+ h )
7 Y . append ( Y [ i ]+ h * F ( T [ i ] , Y [ i ])
20. Échanger deux éléments d’un vecteur ou deux 8 return T , Y
lignes d’une matrice

24. Le schéma d’Euler implicite est défini par : yn+1 = yn + h ∗ f (tn+1 , yn+1 )
1 from scipy . optimize import fsolve
2 def eulerImplicite (f ,a ,b ,n , y0 , t0 ):
3 h ,Y , T = (b - a )/ n ,[ y0 ] ,[ t0 ]
4 for i in range (n -1):
5 T . append ( T [ i ]+ h )
6 y = fsolve ( lambda x : - x + Y [ i ]+ h * f ( T [ i +1] , x ) , Y [ i ])
7 Y . append ( y )
8 return T , Y

Programmation Python 2 fouadnafis@gmail.com - 06.75.38.39.48

Vous aimerez peut-être aussi