pq esses dois códigos tem uma diferença de tempo tão grande na execução?
programa 1 (ESTE EXECUTA BEM MAIS RAPIDO)
public class PrimeNumbers {
public static boolean isPrime ( int num ) {
boolean prime = true;
int limit = (int) Math.sqrt ( num );
for ( int i = 2; i <= limit; i++ ) {
if ( num % i == 0 ) {
prime = false;
break;
}
}
return prime;
}
public static void main ( String[] args ) {
for ( int i = 100000 ; i <= 1000000; i++ ) {
if ( isPrime ( i ) && isPrime (i+2) )
System.out.println ( i + " and " + (i+2)+" ARE TWIN PRIMES!" );
}
}
}
programa 2 (ESTE EH MAIS DEVAGAR)
import java.util.ArrayList;
public class Primos2 {
public static void main(String args[]) {
ArrayList<Integer> segList = new ArrayList<Integer>();
int y=1, z=0, w=0, x=0;
int a;
for (x=100000; x<1000000; x++) {
a = (int) (x/2);
z=0;
for (y=2; y<a; y++) {
if (x%y == 0) {
z++;
break;
}
}
if (z == 0) {
segList.add(x);
if (w>0) {
if ( ((int)segList.get(w-1)) == ((int)segList.get(w)) - 2 ) {
System.out.println(((int)segList.get(w-1))+" and "+((int)segList.get(w))+" ARE TWIN PRIMES!");
}
}
w++;
}
}
}
}