#!/usr/bin/python3 #-*- coding: Utf-8 -*- def factorise(n, facteurs, liste): if n == 1: return n, facteurs, liste if n % liste[0] == 0: return factorise(n // liste[0], facteurs + [liste[0]], liste) return factorise(n, facteurs, [p for p in liste[1:] if p % liste[0] != 0]) def factPrems(n): resultat = factorise(n, [], range(2, n + 1))[1] print(str(n) + ' = ' + '×'.join([str(j) for j in resultat])) return resultat import sys sys.setrecursionlimit(100000) for n in crible(range(2, 18)): factPrems(2**n - 1)