Problema con array

di toto_83 il
6 risposte
Scrivere una classe con il metodo main con un array che contiene i numeri da 2 a
100: trovare e stampare tutti i numeri primi
questa è la traccia

io ho risolto così
class ArrayPrimi {
public static void main(String args[]) {
int sample[] = new int[100];
int i;

for(i = 0; i < 100; i = i+1)
sample = i;

for(int j = 2; j<i; j++){
if (i % j != 0){

System.out.print(i+ " ");

}
}

}
}
solo che non mi stampa i numeri primi ma 100 volte il numero 100 e non capisco il motivo. Chi da una mano

6 Risposte

  • toto_83 ha scritto:


        for(int j = 2; j<i; j++){
    		if (i % j != 0){
    A parte che in questo secondo for non stai più usando l'array.
    Comunque il concetto è che dato un numero N (es. 23) devi "provare" tutte le divisioni (con il modulo %) con valori da 2 fino a N/2.
    23 % 2 dà 0?
    23 % 3 dà 0?
    23 % 4 dà 0?
    ....
    23 % 11 dà 0?

    Al primo che dà 0, allora N non è primo.

    Quindi se devi fare questo per più numeri, chiaramente ci sarà un doppio ciclo annidato.

    Consiglio: fai un metodo a parte:
    boolean isPrimo(int n)
  • Ah ok grazie. Per non uscire dall'Array come dovrei fare?
  • toto_83 ha scritto:


    Per non uscire dall'Array come dovrei fare?
    "non uscire dall'array" in che senso??
  • Con il secondo for non sto usando più l'array creato giusto? Quindi sono uscito dall'array questo intendo.
    Ne ho svolto pure di più difficili ma questo mi sta facendo penare
  • toto_83 ha scritto:


    Quindi sono uscito dall'array questo intendo.
    Ma non vuol dire essere "uscito" dall'array!

    Nel primo for hai popolato l'array:
        for(i = 0; i < 100; i = i+1) 
          sample[i] = i; 
    Hai usato la variabile sample per mettere nell'array i valori { 0, 1, 2 ...... 99 }.

    Bene, ora dovresti usare di nuovo l'array (si presume). Magari fai un altro ciclo che parte da 2 (0 e 1 non ha senso testarli per vedere se "primi"):
    for (int i = 2; i < sample.length; i++) {
        int n = sample[i];
        // verifica se n è "primo" ......
    }
  • Apposto ho risolto. Grazie mille
Devi accedere o registrarti per scrivere nel forum
6 risposte