Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- '''
- Si definiscono divisori propri di un numero tutti i suoi divisori tranne l'uno e il numero stesso.
- Scrivere una funzione modi(ls,k) che, presa una lista ls di interi ed un intero
- non negativo k:
- 1) cancella dalla lista ls gli interi che non hanno esattamente k divisori propri
- 2) restituisce una seconda lista che contiene i soli numeri primi di ls.
- NOTA: un numero maggiore di 1 e' primo se ha 0 divisori propri.
- ad esempio per ls = [121, 4, 37, 441, 7, 16]
- modi(ls,3) restituisce la lista con i numeri primi [37,7] mentre al termine della funzione si
- avra' che la lista ls=[16]
- Per altri esempi vedere il file grade.txt
- ATTENZIONE: NON USATE LETTERE ACCENTATE.
- ATTENZIONE: Se il grader non termina entro 30 secondi il punteggio dell'esercizio e' zero.
- '''
- import math,time
- def modi(ls,k):
- tempo_iniziale = time.time()
- ls_primi=[]
- for i in ls[:]:
- dp=0
- j=2
- while(j<= math.ceil(math.sqrt(i)) ):
- if(i%j==0):
- dp=dp+2
- j=j+1
- if dp==0:
- ls_primi.append(i)
- if dp != k:
- ls.remove(i)
- tempo_finale = time.time()
- print ("Impiegati", str(tempo_finale - tempo_iniziale), "secondi.")
- return ls_primi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement