## Exercice 1 def f(n): return (n**2+1)%10**4 print(f(12345)) N=1990 for k in range(100): N=f(N) print(N) ## Exercice 2 def estcarre(x): y=int(x**(1/2)) return y*y==x for n in range(1,10000): N = n**2+(n+1)**2 if estcarre(N): k = int(N**0.5) print( (n, n+1, k) ) print(k/n) ## Exercice 3 def isprime(n): for k in range(2,int(n**0.5)+1): if n%k==0: return False return True for n in range(100): if isprime(n): print(n) nbchiffres_max = 50 chiffres = "0123456789" L=[[2,3,5,7]] for k in range(nbchiffres_max): H=[] for nombre in L[-1]: for c in chiffres: n = int(str(nombre)+c) if isprime(n): H.append(n) L.append(H) for k in range(len(L)): print(L[k]) ## Exercice 4 import matplotlib.pyplot as plt import numpy as np S=4 X,Y=[],[] for k in range(S): X.append([np.cos(2*k*np.pi/S)]) Y.append([np.sin(2*k*np.pi/S)]) N=1000 r=0.01 for n in range(N): for k in range(S-1): X[k].append(X[k][-1]+r*(X[k+1][-1]-X[k][-1])) Y[k].append(Y[k][-1]+r*(Y[k+1][-1]-Y[k][-1])) X[-1].append(X[-1][-1]+r*(X[0][-1]-X[-1][-1])) Y[-1].append(Y[-1][-1]+r*(Y[0][-1]-Y[-1][-1])) for k in range(S): plt.plot(X[k],Y[k]) plt.axis("equal") plt.show() ## Exercice 5 def voisins(p): x,y=p[0],p[1] return [(x-1,y),(x+1,y),(x-0.5,y-1),(x-0.5,y+1),(x+0.5,y-1),(x+0.5,y+1)] def nb_voisins_flocons(p,F): V=voisins(p) c=0 for v in V: if v in F: c+=1 return c def croissance(F): C=[] for f in F: V=voisins(f) for v in V: if not(v in C) and nb_voisins_flocons(v,F)==1: C.append(v) return C F=[(0,0)] for k in range(28): F+=croissance(F) X,Y=[],[] for f in F: X.append(f[0]) Y.append(f[1]) import matplotlib.pyplot as plt plt.scatter(X,Y) plt.axis("equal") plt.show()