Bonjour à tous,
Je suis nouvelle sur ce forum et j'aimerais solliciter votre aide, sur comment optimiser mon code, qui est la solution au problème Euler 245, sur le site hackerrank, mon code fonctionne quand il est testé sur un petit chiffre 5,6,7. Par contre quand je soumets mon code et que des tests sont effectués sur des nombres très élevé, j'ai l'erreur que le code met trop de temps à s’exécuter.
Voici mon code et je vous remercie d'avance pour votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 
 
def diviseurs_communs(a,b):
        diviseurs_a=[i for i in range(1,a+1) if a%i==0]
        diviseurs_b=[i for i in range(1,b+1) if b%i==0]
        div_a=set(diviseurs_a)
        div_b=set(diviseurs_b)
        div_commun=list(div_a.intersection(div_b))
        return(div_commun)
 
def Euler_toti(n):
     if n==1:
         eul=1
         return(eul)
     else :
        eul=[1 for i in range(1,n) if len(diviseurs_communs(n,i))==1]
 
     eule=sum(eul) 
 
     return(eule)
 
 
 
def Corresilience(N):
 
   cor=[i for i in range(2,N+1) if Euler_toti(i)==(i-1)/(i-Euler_toti(i))]
   corre=sum(cor)
   print(corre)
   return(corre)
 
N=input()
Corresilience(int(N))