Ocena użytkownikóww: ***** / 11
Nadesłany przez gchlebus, 20 lutego 2011 16:45
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.
sitoerastotenesa/Sito.java:
/**
* www.algorytm.org
* sito Eratostenesa - poszukiwanie liczb pierwszych
*/
package sitoerastotenesa;
public final class Sito {
private int[] tab;
private int sqrt;
Sito(int a, int b){
sqrt = (int) Math.sqrt(b);
//wypelnianie tablicy liczbami z przedzialu [a,b]
tab = new int[b-a+1];
for (int i = 0; i<tab.length; i++){
tab[i] = a+i;
}
odsiew();
drukuj();
}
//selekcja liczb pierwszych zgodnie z algorytmem Erastotenesa
public void odsiew (){
int index = 0;
while (tab[index] <= sqrt ){
for (int i = index+1; i<tab.length; i++){
if (tab[i]%tab[index] == 0) tab[i]=0;
}
do{
index++;
}while(tab[index]==0);
}
}
//wydruk wynikow
public void drukuj(){
for (int i = 0; i<tab.length; i++){
if (tab[i] != 0){
System.out.println(tab[i]);
}
}
}
}