Analizziamo quel che ha scritto Nosferatu Zodd
//cambierai il nome del metodo vero??
public static boolean bol (int a) {
// ottimo, controllo sia che sia tra i primi 3 ( 3 compreso mi raccomando ) e che sia positivo != 0.
if (a <
= 3) return (a>1);
//Math.sqrt(a) è un controllo che non varia nel ciclo, quindi lo farei fuori
//if( ( int )Math.sqrt( a ) == 0 )
// return false;
//Quindi se esiste una radice quadrata intera fai tornare false. e tra l'altro non ho capito che fa...Anche perchè ti restituirà sempre un valore intero positivo e per quanto rigurda i numeri negativi li hai già gestiti sopra, quindi totalmente inutile...
//Altra cosa....i<=1??
//Se parte da 3....semmai volevi scrivere i<= 1000
//Devi aggiungere un'altro contatore che partirà da 3 ed andrà sino ad a/2.
//Questo perchè se io nella tua funzione metto 44 entro nel for e mi torna true...perchè al //controllo della sqrt ottengo false, esco e mi trovo un return true....
//Quindi il for diventa
//for( int i = 3; i <= a/2 ; i++ )
// if( a%i == 0 ) return false;
//return true
for (int i = 3, 1 = (int) Math.sqrt(a); i <= 1; i += 2)
if (a % i == 0)
return false;
return true;
}