PDA

View Full Version : Crivello di Eratosten [JAVA] ..non va!!


luxorl
04-04-2004, 11:42
import GraphicIO.*;
public class crivello{
public static void main(String args[]){
GraphicConsole.showWindow();
crivi();
}

public static void crivi(){
boolean v[]=new boolean [1001];
v[0]=false;
v[1]=false;
for(int i=2;i<v.length;i++)
v[i]=true;
minprimo=2;
do{
for(int i=3;i<v.length;i++)
if(v[i]%minprimo==0)v[i]=false;
minprimo++;
while(minprimo<v.length && minprimo==false)
minprimo++;
}while(minprimo<v.length)
for(int i=0;i<v.length;i++){
if(v[i]==true)
GraphicConsole.println(i);
}
}
}


mi da questo errore:

crivello.java:22: ';' expected
for (int i=0;i<v.length;i++){
1 error

come se mancasse un punto e virgola.. ma io nn lo riesco a vedere dove andrebbe messo! chi mi aiuta a capire?

Mazza2
04-04-2004, 12:00
if(v[i]%minprimo==0)


ma fai un boolean % un integer !!?!???

forse ho letto male il codice

Mazza2
04-04-2004, 12:02
minprimo++;
while(minprimo<v.length && minprimo==false)



nella riga prima incrementi minprimo e poi ti chiedi se e' uguale a false?? ma sto minprimo cos'e'?? un boolean o un numero??

luxorl
04-04-2004, 13:32
if(v[i]%minprimo==0)

corretto con if(i%minprimo==0)

e correto anche

minprimo++;
while(minprimo<v.length && minprimo==false)


con

minprimo++;
while(minprimo<v.length && v[minprimo]==false)

ma nn va ancora :\

Mazza2
04-04-2004, 21:39
dunque ho fatto un file che compila, poi tu modificalo come vuoi. Soprattutto minprimo che nel tuo sorgente non era dichiarato da nessuna parte:


public class Crivello{
private static int minprimo;

public static void main(String args[]){
GraphicConsole.showWindow();
crivi();
}

public static void crivi(){
boolean v[]=new boolean [1001];
v[0]=false;
v[1]=false;
for(int i=2;i<v.length;i++){
v[i]=true;
}

minprimo=2;
do{
for(int i=3;i<v.length;i++){
if(i%minprimo==0){
v[i]=false;
}
minprimo++;
}
while(minprimo<v.length && v[minprimo]==false) {

minprimo++;

}
}
while(minprimo<v.length);

for(int i=0;i<v.length;i++){
if(v[i]==true) {
GraphicConsole.println(i);
}
}
}
}



p.s. il tuo sorgente e' difficile da comprendere e considera che sono solo pochissime righe... ti consiglio di cambiare un po' lo stile di programmazione soprattutto quando scrivi while o if che devono eseguire una sola riga

if()
istruzione;


scivila

if(){
istruzione;
}


ti richiede di scrivere comunque le due graffe ma il codice e' 10 volte + leggibile!