#!/usr/bin/env python # coding: utf-8 # In[2]: from __future__ import print_function, division # # Question 1 # In[3]: def somme(A, B): C = [] for i in range(4): Ai = A[i] Bi = B[i] row = [Ai[j]+Bi[j] for j in range(4)] C.append(row) return C # In[4]: X = [[56, 39, 3, 41], [23, 78, 11, 62], [61, 26, 65, 51], [80, 98, 9, 68]] Y = [[51, 52, 53, 15], [ 1, 71, 46, 31], [99, 7, 92, 12], [15, 43, 36, 51]] # In[5]: somme(X, Y) # On vérifie en utilisant sympy que le calcul est correct: # In[6]: from sympy import Matrix Mx = Matrix(X) My = Matrix(Y) Mx + My # # Question 2 # In[7]: def produit(A, B): C = [] for i in range(4): row = [] for j in range(4): row.append(sum(A[i][k]*B[k][j] for k in range(4))) C.append(row) return C # In[8]: produit(X,Y) # On vérifie en utilisant sympy que ce calcul est correct: # In[9]: Mx * My # # Question 3 # In[10]: from math import sqrt def est_premier(n): if n == 0 or n == 1: return False for i in range(2, int(sqrt(n))+1): if n % i == 0: return False return True # On vérifie que la fonction `est_premier` fonctionne bien: # In[11]: for i in range(100): if est_premier(i): print(i, end=', ') # D'abord, on remarque qu'il n'existe pas de quadruplet de nombre premiers $p$, $p+2$, $p+4$, $p+6$, car l'un d'eux doit être divisible par trois (en effet, leurs valeurs modulo 3 sont $p$, $p+2$, $p+1$). Comme 3 est le seul nombre premier divisible par trois, il faudrait que le quadruplet contienne le nombre 3. Or un tel quadruplet n'existe pas. # In[12]: def triplets_nombre_premier(n): L = [] p = 3 while len(L) < n: if est_premier(p) and est_premier(p+6): if est_premier(p+2): L.append((p, p+2, p+6)) elif est_premier(p+4): L.append((p, p+4, p+6)) p += 2 return L # In[13]: triplets_nombre_premier(10) # # Question 4 # In[14]: def triplets_pythagore(n): L = [] for c in range(1, n+1): for b in range(1, c+1): for a in range(1, b+1): if a**2+b**2 == c**2: L.append((a,b,c)) return L # In[15]: triplets_pythagore(30) # In[ ]: