-
~Andrey™.
User deleted
CITAZIONE (RootkitNeo @ 7/11/2009, 22:51)CITAZIONE (~{Skydrake™}» @ 7/11/2009, 22:22)Computazionalmente è molto pesante...
Se non ti va di scervellarti troppo con gli algoritmi, fai semplicemente un ciclo da 2 a radice di N, e se trovi un divisore, il numero non è primo.
Hai decisamente ragione!!
In quel modo però poteva confrontarlo al suo script visto la similitudine!
Questo è javaCODICEString isPrime(int n) {
for(int i=0; i<(int)Math.sqrt(n); i++) {
if(i%n==0) stato="Il numero "+n+" non e' primo.";
else stato = "Il numero "+n+" e' primo.";
}
return stato;
}
Traducibile tranquillamente in Python!
Sarebbe meno dispendioso fare così:CODICEString isPrime(int n) {
for(int i=0; i<(int)Math.sqrt(n); i++) {
if(i%n==0) return "Il numero "+n+" non e' primo.";
}
return "Il numero "+n+" e' primo.";
}
Si risparmiano un sacco di assegnazioni della variabile stato, e un sacco di iterazioni nel caso non fosse primo [in questo modo infatti se non è primo, al primao divisore la funzione termina].