Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    115

    Esercizio semplicissimo

    Mi si chiede di scrivere un piccolo prog che memorizzi in 1 costante di tipo int[] i numeri primi minori di 50, legge un indice intero e stampa il valore memorizzato in quella posizione dell'array. Il prog deve funzionare anche se si decide di inizializzare la costante con una sequenza di pirimi piu lunga o piu corta.

    Non capisco se si chiede di far calcolare i numeri primi alla macchina, e se si: Come?

    Se non avete tempo x troppe spiegazioni mi accontento anche del codice direttamente, poi tanto ci arrivo! ^^

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    72
    Non capisco se si chiede di far calcolare i numeri primi alla macchina, e se si: Come?
    Un numero primo è per definizione un numero divisibile solamente per uno e per sé stesso.
    Per scoprire se a è divisibile per b basta controllare che il resto di a/b è uguale a 0; questo lo puoi fare tramite l'operatore %:
    codice:
    if(a%b==0)
    Puoi trovare i numeri primi nel seguente modo:
    Fai un for su tutti i valori minori di un massimo (ad esempio 50) e controlli se il valore non è divisibile per nessun altro numero (tramite un secondo for); se questo è vero lo aggiungi all'array.
    Non so se sono stato chiaro..
    se hai dubbi chiedi pure

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    115
    Sei stato Chiarissimo!!
    Ma chiedo venia, mi sono spiegato male io! Conosco i cicli ma il punto di manuale al quale sono arrivato non parla ancora di niente del genere quindi dovrei farlo senza for if ecc ...

    Pensi sia possibile? Altrimenti lo devo per forza caricare a mano dal codice ..

    quindi:

    codice:
     import jbook.util.Input;
    
    public class ArrayPrimi {
    	public static void main(String[] args) {
    
    		int [] primi = { 1, 2, 3, 5, 7, 11, 13, 17, 19 };
    		System.out.println ("Ci sono " +primi.length+ " elementi nell'array");
    		int l = Input.readInt("Quale elemento vuoi visualizzare? ");
    		
    		System.out.println (l <= primi.length ? "L'elemento " + l +" e': "+ primi[l-1]
    											  : "Devi inserire un valore minore di " + primi.length);
    
    	}
    }
    e' gia' apposto x un array con numeri primi minori di 20

    xo', se cosi' l'esercizio e' risolto, non capisco il significato dell'ultimo pezzo: Il programma deve continuare a funzionare anche se si decide di inizializzare l'array int[] con una sequenza di primi piu' lunga o piu' corta.

    Grazie per il tuo tempo e pazienza!

  4. #4
    farei cosi':

    Codice PHP:

    public class NthPrime {
      
      static 
    int DEF_MAX_ARRAY_SIZE 100//Magari userei una struttura dati con dimensione
                                                            //variabile, tipo ArrayList 
      
    static int DEF_MAX_VALUE 50;

      public static 
    void main (String[] args) {
        
    int[] arrayOfPrimes = new int [arraySize];
        
    int index 0;
        
    boolean isPrime;
        for (
    int i 1DEF_MAX_VALUE++) {
          
    //Now i is the nth value we are testing for primality
          
    isPrime true;
          for (
    int divisor 2divisor <= Math.sqrt (i); divisor ++) {
            if (
    divisor == 0) {
              
    //we found a divisor: i is not prime
              
    isPrime false;
              break;
            }
          }
          if (
    isPrime) {
            
    arrayOfPrimes[index++] = i;
          }
        }
      }

    Non l'ho provato ma dovrebbe andare.

    Nota il for che controlla il divisore, va fino a radice di i. Infatti se i non e' primo sicuramente uno dei suoi divisori sara' minore della sua radice quadrata.
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    115
    avanti.. Il prob e' che come dicevo dovrei riuscire a farlo senza utilizzare IF ma al massimo FOR

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Originariamente inviato da Virtuoid
    avanti.. Il prob e' che come dicevo dovrei riuscire a farlo senza utilizzare IF ma al massimo FOR
    Senza 'if'?? Sì, è possibile:

    codice:
    public static boolean isPrimeNumber(int num) {
        int i;
        for (i = 2; i <= num && num%i != 0; i++) {}
        return i == num;
    }
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.