from __future__ import division, print_function
Syntaxe :
for ELEMENT in LISTE: # ligne d'en-tête se terminant par ":"
INSTRUCTION #1 # bloc d'instructions indenté de 4 espaces
INSTRUCTION #2
INSTRUCTION #3
Syntaxe :
if CONDITION_1: # ligne d'en-tête se terminant par ":"
INSTRUCTION #1 # bloc d'instructions indenté de 4 espaces
INSTRUCTION #2
INSTRUCTION #3
elif CONDITION_2:
INSTRUCTION #4 # bloc d'instructions indenté de 4 espaces
INSTRUCTION #5
INSTRUCTION #6
else:
INSTRUCTION #7 # bloc d'instructions indenté de 4 espaces
INSTRUCTION #8
INSTRUCTION #9
a = 6
b = 15
if a < b:
m = a
else:
m = b
m
6
m = a if a < b else b
m
6
Syntaxe :
def FONCTION(PARAMETRES): # ligne d'en-tête se terminant par ":"
INSTRUCTION #1 # bloc d'instructions indenté de 4 espaces
INSTRUCTION #2
INSTRUCTION #3
La boucle while
peut être utile lorsqu'on ne sait pas combien d'itérations on doit faire.
Syntaxe :
while CONDITION: # ligne d'en-tête se terminant par ":"
INSTRUCTION #1 # bloc d'instructions indenté de 4 espaces
INSTRUCTION #2
INSTRUCTION #3
Écrire un programme qui affiche les puissances de deux inférieures à un milliard.
k = 1
while k < 10**9:
print(k)
k = k * 2
1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768 65536 131072 262144 524288 1048576 2097152 4194304 8388608 16777216 33554432 67108864 134217728 268435456 536870912
Pour un nombre $x\geq1$, trouver l'unique valeur entière $n$ vérifiant $$2^{n−1} < x < 2^n,$$ c’est-à-dire le plus petit entier $n$ vérifiant $x < 2^n$.
k = 1
n = 0
while k < 10**9:
k = k * 2
n = n + 1
print(n)
30
Écrire un programme qui affiche les puissances de deux inférieures à un milliard et arrêter le programme si une puissance termine par 88.
k = 1
while True:
k = 2*k
print(k)
--------------------------------------------------------------------------- KeyboardInterrupt Traceback (most recent call last) <ipython-input-11-c8bf7e76088e> in <module>() 1 k = 1 2 while True: ----> 3 k = 2*k 4 print(k) KeyboardInterrupt:
Écrivez un programme qui calcule les 50 premiers termes de la table de multiplication par 13, mais n’affiche que ceux qui sont des multiples de 7.
for i in range(10):
if i == 7:
continue
print(i)
0 1 2 3 4 5 6 8 9
En mathématiques, on appelle suite de Syracuse une suite d'entiers naturels définie de la manière suivante :
On part d'un nombre entier plus grand que zéro ; s’il est pair, on le divise par 2 ; s’il est impair, on le multiplie par 3 et on ajoute 1. En répétant l’opération, on obtient une suite d'entiers positifs dont chacun ne dépend que de son prédécesseur.
Par exemple, à partir de 14, on construit la suite des nombres : 14, 7, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1, 4, 2... C'est ce qu'on appelle la suite de Syracuse du nombre 14.
https://fr.wikipedia.org/wiki/Conjecture_de_Syracuse
Écrire une fonction qui calcule la suite de Syracuse d'un nombre et retourne ce résultat sous la forme d'une liste.
def syracuse(n):
if n % 2 == 0:
return n // 2
else:
return 3 * n + 1
syracuse(13)
40
syracuse(40)
20
n = 1234097125
while n != 1:
n = syracuse(n)
print(n, end=' ')
3702291376 1851145688 925572844 462786422 231393211 694179634 347089817 1041269452 520634726 260317363 780952090 390476045 1171428136 585714068 292857034 146428517 439285552 219642776 109821388 54910694 27455347 82366042 41183021 123549064 61774532 30887266 15443633 46330900 23165450 11582725 34748176 17374088 8687044 4343522 2171761 6515284 3257642 1628821 4886464 2443232 1221616 610808 305404 152702 76351 229054 114527 343582 171791 515374 257687 773062 386531 1159594 579797 1739392 869696 434848 217424 108712 54356 27178 13589 40768 20384 10192 5096 2548 1274 637 1912 956 478 239 718 359 1078 539 1618 809 2428 1214 607 1822 911 2734 1367 4102 2051 6154 3077 9232 4616 2308 1154 577 1732 866 433 1300 650 325 976 488 244 122 61 184 92 46 23 70 35 106 53 160 80 40 20 10 5 16 8 4 2 1
n = 1234097125
while n != 1:
print(n, end=' ')
n = syracuse(n)
print(n)
1234097125 3702291376 1851145688 925572844 462786422 231393211 694179634 347089817 1041269452 520634726 260317363 780952090 390476045 1171428136 585714068 292857034 146428517 439285552 219642776 109821388 54910694 27455347 82366042 41183021 123549064 61774532 30887266 15443633 46330900 23165450 11582725 34748176 17374088 8687044 4343522 2171761 6515284 3257642 1628821 4886464 2443232 1221616 610808 305404 152702 76351 229054 114527 343582 171791 515374 257687 773062 386531 1159594 579797 1739392 869696 434848 217424 108712 54356 27178 13589 40768 20384 10192 5096 2548 1274 637 1912 956 478 239 718 359 1078 539 1618 809 2428 1214 607 1822 911 2734 1367 4102 2051 6154 3077 9232 4616 2308 1154 577 1732 866 433 1300 650 325 976 488 244 122 61 184 92 46 23 70 35 106 53 160 80 40 20 10 5 16 8 4 2 1
n = 12
L = []
for i in range(1, n+1):
reste = n % i
if reste == 0:
L.append(i)
print(L)
[1, 2, 3, 4, 6, 12]
from math import sqrt
def diviseurs(n):
L = []
sq = int(sqrt(n))
for i in range(1, sq+1):
reste = n % i
if reste == 0:
L.append(i)
L.append(n//i)
return L
diviseurs(12)
[1, 12, 2, 6, 3, 4]
diviseurs(7)
[1, 7]
Écrire une fonction est_premier(n)
qui renvoie True
si n
est premier et False
sinon.
def est_premier(n):
div = diviseurs(n)
return len(div) == 2
est_premier(12)
False
est_premier(13)
True
def est_premier_2(n):
sq = int(sqrt(n))
for i in range(2, sq+1):
if n % i == 0:
return False
return True
est_premier_2(12)
False
est_premier_2(13)
True
Écrivez un programme qui analyse un par un tous les éléments d’une liste de nombres pour générer deux nouvelles listes. L’une contiendra seulement les nombres pairs de la liste initiale, et l’autre les nombres impairs.
L = [123, 535, 74764, 14379, 56452546, 2356, 3, 4, 8]
Existe-t-il deux nombres entiers positifs x et y tels que $x^2 − 61y^2 = 1$ ?