Ciao, mi piacerebbe capire com'è strutturato il programma che trovo come esempio nella guida Java.
da quello che capisco io ..
abbiamo un main dentro al quale viene:
- istanziato l'oggetto 'e' della classe 'Eratostene'
- chiamato l'evento 'calcolaPrimi'
- chiamato l'evento 'scriviPrimi'
dentro all'evento 'calcolaPrimi' (ciclo 'while'):
- si chiama l'evento 'elMul', che non ha ritorno (void), e a cui viene passato il campo 'num'
- si chiama l'evento 'prossimo', che ha come ritorno il campo 'num', che gli viene anche passato come input
a stò punto mi chiedo (sempre che quello che descritto finora sia corretto) ..
l'evento 'Eratostene' dell'omonima classe, dove in sostanza si dichiarano e valorizzano i 2 array, parte con l'istanza dell'oggetto 'e' ? (visto che dal main non viene chiamato ..)
e quale differenza ci sarebbe con tutti gli altri eventi che trovo dentro la classe, che devono essere invece 'chiamati' ?
Grazie mille
Codice PHP:
class Eratostene
{
static int MAX=1000;
int [] numeri = new int[MAX];
boolean [] primi = new boolean[MAX];
// ---> 1
public Eratostene()
{ int i;
for (i=0;i<MAX;i++)
{
numeri[i]=i+1;
primi[i]=true;
};
}
// ---> 2
void elMul(int a)
{
for (int j=2;j*a<=MAX;j++)
primi[(j*a)-1]=false;
}
// ---> 3
int prossimo(int n)
{
int tmp=n;
while (!primi[tmp])
{
tmp++;
if (tmp>=MAX)
break;
}
return tmp+1;
}
// ---> call 1
void calcolaPrimi()
{
int num=2;
while (num<=MAX)
{
elMul(num);
num=prossimo(num);
};
}
// ---> call 2
void scriviPrimi()
{
System.out.println("I numeri primi fino a "+MAX+" sono:");
for (int i=0; i < MAX ; i++)
if (primi[i])
System.out.print(numeri[i]+" ");
}
public static void main(String[] args)
{ Eratostene e = new Eratostene();
e.calcolaPrimi();
e.scriviPrimi();
}
}