print("\nExercice 4\n") def fermat(n): return 2 ** (2 ** n) + 1 i=0 while i<=5: print("fermat(",i,")=",fermat(i),sep='') i=i+1 def premier_facteur(n): d = 2 while n%d != 0 : d = d+1 return d i=2 while i<=20: print('Le premier facteur de',i,'est',premier_facteur(i)) i=i+1 print('Le premier facteur de',57,'est',premier_facteur(57)) def est_premier(n): return n == premier_facteur(n) def dernière_question() : n = 0 # Heureusement que Fermat s'est trompé, sinon notre boucle ne terminerai jamais ! while est_premier(fermat(n)) : n = n + 1 print('fermat(',n,')=',fermat(n),' n’est pas premier',sep='',end=' ') print('car il a pour diviseur ', premier_facteur(fermat(n)),sep='') dernière_question() def dernière_question_v2() : n = 0 f = fermat(n) p = premier_facteur(f) # Pour que le test du while ait un sens la première fois qu'on # rentre dans la boucle, il faut initialiser f et p avant. while f == p : n = n + 1 f = fermat(n) p = premier_facteur(f) print('fermat(',n,')=',f,' n’est pas premier',sep='',end=' ') print('car il a pour diviseur ',p,sep='') dernière_question_v2() def dernière_question_v3() : n = 0 f = fermat(0) p = premier_facteur(f) while f == p : n = n + 1 f = (f-1)**2 + 1 p = premier_facteur(f) print('fermat(',n,')=',f,' n’est pas premier',sep='',end=' ') print('car il a pour diviseur ',p,sep='') dernière_question_v3() print("\nExercice 5\n") def dériver(f,a,h) : return (f(a+h) - f(a)) / h def résoudre(f,a,h) : while abs(f(a)) >= h : a = a - f(a) / dériver(f,a,h) return a def f(x) : return x*x - 2 print("racine(2) =",résoudre(f, 1, 0.000001)) print("\nExercice 6\n") def étoile(): print('*',sep='',end='') def dièse() : print('#', sep='',end='') def nouvelle_ligne() : print() # Pour afficher n fois le même symbole def ligne_simple(n,symbole): i=0 while i