housed93 Inviato 14 Settembre 2008 Segnala Condividi Inviato 14 Settembre 2008 Ciao ragazzi, stò sviluppando un programmino stupidissimo, con Python, (serve ad identificare i numeri primi). def NumeriPrimi(x): if x==0: print "Stop!" elif x==2 or x==3 or x==5 or x==7 or x==11 or x==13 or x==17 or x==19 or x==23 or x==29 or x==31 or x==37 or x==41 or x==43 or x==47 or x==53 or x==59 or x==61 or x==71: print x NumeriPrimi(x-1) elif x%2==0 or x%3==0 or x%5==0 or x%7==0 or x%11==0 or x%13==0 or x%17==0 or x%19==0 or x%23==0 or x%29==0 or x%31==0 or x%37==0 or x%41==0 or x%43==0 or x%47==0 or x%53==0 or x%59==0 or x%61==0 or x%71==0: NumeriPrimi(x-1) else: print x NumeriPrimi(x-1) numero=input("Dammi il numero: ") NumeriPrimi(numero) input("Premi invio per uscire!") in pratica di quando si apre il programma, viene chiesto di digitare un numero es.500 e il programma ti da in automatico, tutti i numeri primi da 500 a 1 fin qui il tutto funziona. Poi però, quando decido di inserire un numero più grande di 997, mi da una lista di errori e il programma si chiude. credo che questo sia legato al fatto che python tende a gestire la ram come gli pare. C'è un modo per infrangere questa limitazione? ZIOSTEVE (il blog) Link al commento Condividi su altri siti Altre opzioni di condivisione...
Ospite jbrozz Inviato 14 Settembre 2008 Segnala Condividi Inviato 14 Settembre 2008 Naaa python è interpretato, la memoria è gestita dall'interprete. Non credo sia un problema di memoria. Ora lo provo e provo a farti sapere;) Link al commento Condividi su altri siti Altre opzioni di condivisione...
TomAlso Inviato 14 Settembre 2008 Segnala Condividi Inviato 14 Settembre 2008 Può darsi che Python semplicemente termini il programma se dopo un certo numero di chiamate a se stessa la funzione non ha ancora finito. Per esempio, se provi con questo: def ricorsione(n): print n ricorsione(n + 1) ricorsione(1) Noterai che si ferma dopo esattamente 999 chiamate. PS Non sono sicuro ma la cosa di certo è sospetta Link al commento Condividi su altri siti Altre opzioni di condivisione...
Ospite jbrozz Inviato 15 Settembre 2008 Segnala Condividi Inviato 15 Settembre 2008 Si ti quoto. La cosa è molto sospetta. Python dovrebbe calcolare fino all infinito (ovvero fino alla fine della memoria disponibile, cosa praticamente impossibile sui nostri calcolatori) Link al commento Condividi su altri siti Altre opzioni di condivisione...
housed93 Inviato 15 Settembre 2008 Autore Segnala Condividi Inviato 15 Settembre 2008 quindi cosa mi consigliereste di fare? ho provato a googlare ma non si trova niente! ZIOSTEVE (il blog) Link al commento Condividi su altri siti Altre opzioni di condivisione...
TomAlso Inviato 15 Settembre 2008 Segnala Condividi Inviato 15 Settembre 2008 quindi cosa mi consigliereste di fare? ho provato a googlare ma non si trova niente! Per tabulare i numeri primi? Magari limita la funzione a un certo intervallo. Per esempio puoi modificare la tua funzione in modo che prenda due argomenti interi (non troppo distanti) e stampi tutti i primi contenuti nell'intervallo. Link al commento Condividi su altri siti Altre opzioni di condivisione...
Ospite jbrozz Inviato 15 Settembre 2008 Segnala Condividi Inviato 15 Settembre 2008 quoto, è una ottima soluzione. Oppure metti un limite. Nel senso che passi un valore alla funzione (fisso oppure dell'utente che decida fino a che numero di intervallo mostrare i primi) Link al commento Condividi su altri siti Altre opzioni di condivisione...
Messaggi raccomandati
Archiviato
Questa discussione è archiviata e chiusa a future risposte.