Advertisement
Guest User

program01

a guest
Oct 22nd, 2017
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.34 KB | None | 0 0
  1. '''
  2. Si definiscono divisori propri di un numero tutti i suoi divisori tranne l'uno e il numero stesso.
  3. Scrivere una funzione modi(ls,k) che, presa una lista ls di interi  ed un intero
  4. non negativo k:
  5.    1) cancella  dalla lista ls gli interi che non hanno esattamente k divisori propri
  6.    2) restituisce una seconda lista che contiene i soli numeri primi di ls.
  7. NOTA: un numero maggiore di 1 e' primo se ha 0 divisori propri.
  8.  
  9. ad esempio per ls = [121, 4, 37, 441, 7, 16]
  10. modi(ls,3) restituisce la lista con i numeri primi [37,7] mentre al termine della funzione si
  11. avra' che la lista ls=[16]
  12.  
  13. Per altri  esempi vedere il file grade.txt
  14.  
  15. ATTENZIONE: NON USATE LETTERE ACCENTATE.
  16. ATTENZIONE: Se il grader non termina entro 30 secondi il punteggio dell'esercizio e' zero.
  17. '''
  18. import math,time
  19.  
  20. def modi(ls,k):
  21.     tempo_iniziale = time.time()
  22.     ls_primi=[]
  23.     for i in ls[:]:
  24.         dp=0
  25.         j=2
  26.         while(j<= math.ceil(math.sqrt(i)) ):
  27.             if(i%j==0):
  28.                 dp=dp+2
  29.             j=j+1
  30.        
  31.         if dp==0:
  32.             ls_primi.append(i)      
  33.            
  34.        
  35.         if dp != k:
  36.             ls.remove(i)
  37.            
  38.     tempo_finale = time.time()
  39.     print ("Impiegati", str(tempo_finale - tempo_iniziale), "secondi.")
  40.        
  41.     return ls_primi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement