import numpy as np #EXERCICE 1 #1 def multiple(n): lst=[] i=1 while i*7 <= n: lst.append(i*7) i+=1 return(lst) #2 def isprime(n): s=int(n**.5) t=True i=2 while i <= s and t==True: if n%i == 0: t=False i+=1 return(t) #Cette fonction vérifie qu'aucun des entiers compris entre 2 et sqrt(n) ne sont pas des diviseurs de n. #Si aucun de ces entiers n'est un diviseur de n, alors n est premier car sqrt(n) est un majorant de l'ensemble des diviseurs de n #3 def premiers(n): lst=[2] i=3 while i <= n: if isprime(i): lst.append(i) i+=2 return lst #4 def npremiers(n): lst=[2] c=1 i=3 while c= 2*1e-5: un = 1/2*(un + 2/un) i+=1 return i #4 #Uq doit converger vers sqrt(q), donc on pose q=l², on inverse et on utilise le fait que (l/q) + (q-1)*l = l pour retrouver une récurrence de la même forme que la première. def uq(n, q): if n==0: return 1 pre=uq(n-1, q) return (1/q)*((q-1)*pre + q/pre) #Exercice 3 #1, a) def fact(n): res=1 for i in range(2,n+1): res *= i return res #1, b) def binome(n, p): return fact(n)/(fact(p)*(fact(n-p))) #2 def binomes(n): lastl=[1, 0] for i in range(n+1): l = [1] for j in range(i): l.append(lastl.pop(0) + lastl[0]) lastl=l+ [0] return(l) #Exercice bonus : Conjecture de Syracuse def syracuse(n): if n%2: return 3*n + 1 return n>>1 def NbrEtapes(n, quiet=True): l=n i=0 while l!=1: if not quiet: print(l) l=syracuse(l) i+=1 return i def printNbrEtapes(n): a=[NbrEtapes(i) for i in range(1, n+1)] print(a) return a def test(n): for i in range(n): print(NbrEtapes(3**i), NbrEtapes(3**i + 1)) #Exercice bonus : Palindromes et nombres de Lychrel def palindrome(l): return l == l[::-1] def ldec(n): return list(map(int, str(n))) def NbrPal(N): #Methode ~bourrin~: return sum([palindrome(ldec(i)) for i in range(N)]) def f(n): return n + int(str(n)[::-1]) def hauteur(n): N = n c = 0 while not palindrome(ldec(N)): N = f(N) c += 1 if c>4999 and c%5000==0 and not input("continuer ? (oui/non) >").lower().startswith('o'): break print(N) return c