Pagina 1 di 5 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 44

Discussione: Programmino num primi

  1. #1

    Programmino num primi

    Mi sto per cimentare nell'uso dei tread e mi serviva un aiuto.

    Devo fare un programma in java che utilizzi due thread che, una volta in esecuzione, visualizzino in due diversi textBox rispettivamente: il primo i numeri primi e l'altro i restanti numeri, partendo da 1 fino a 1000.

  2. #2
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    inizia da google:

    Una visitina (penso) la meriti: http://www.claudiodesio.com/java/Tut...ad/Threads.htm

    e probabilmente anche questo: http://java.html.it/articoli/leggi/1579/thread-in-java/

    e senza dubbio questo: http://java.sun.com/docs/books/tutor...rocthread.html

    Poi ci sono i numeri primi... e allora, in caso di dubbi, si può dare un'occhiata qui: http://it.wikipedia.org/wiki/Numero_primo
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  3. #3
    Utente di HTML.it L'avatar di @DI3GO@
    Registrato dal
    Nov 2008
    Messaggi
    537
    Utilizza il crivello di Aristotele...Sarebbe un'interessante argomentazione oltre che ad una interessante implementazione ( impegnativa con numeri grandi )....

    Oppure utilizza la regola : un numero è primo se non è divisible per nessun numero naturale pari o inferiore alla sua metà, ovvero

    primo se primo / numero != 0 dove
    numero = tutti i numeri possibili da 2 a primo/2;
    Partendo da 2 perchè ovviamente primo/1 sarà vero in quanto prerogativa dei numeri primi.

    Per i due Thread uno gli fai calcolare i numeri primi con le regole sopra citate, mentre l'altro fa l'esatto opposto.
    Nipote: persona incompetente, con le soli doti di "copia/incolla" e la creazione automatica di siti internet ed interfaccie grafiche.Compie lavori apparentemente qualificati e richiesta una modifica sparisce in quatemala con i pochi soldi ottenuti.[...] Fonte la Diegonzelli

  4. #4
    per i numeri primi stavo pensando a quanke ciclo for. Condividete?

  5. #5
    Utente di HTML.it L'avatar di @DI3GO@
    Registrato dal
    Nov 2008
    Messaggi
    537
    Che ci siano cicli....certamente...Quello che devi fare è come ti ha suggerito Pastore12, ovvero informati e semmai posta i tuoi dubbi.
    Analizza bene quali siano le soluzioni possibili, in quanto puoi tranquillamente implementare vari metodi per la ricerca dei numeri primi ( come quelli che ti ho proposto ), devi solo partire e poi siamo qui per qualche dubbio ( sul codice ed il suo funzionamento )
    Nipote: persona incompetente, con le soli doti di "copia/incolla" e la creazione automatica di siti internet ed interfaccie grafiche.Compie lavori apparentemente qualificati e richiesta una modifica sparisce in quatemala con i pochi soldi ottenuti.[...] Fonte la Diegonzelli

  6. #6
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    Beh.. io non vedo la necessità di creare un algoritmo performante, tutto sommato se facessi qualcosa del tipo:

    codice:
    per ogni valore i minore di nun/2
      se num diviso i non da resto
        num non è primo
    in quanto a stupidità siamo a livelli da record... però non ti impianta il computer. Tanto 1000 si risolve alla prima iterazione, 999 alla seconda, 998 prima.. 997 ? Boh! Ma di sicuro in meno di 500 iterazioni. A 2 giga di processore.. quanti millisecondi saranno.. insomma.. e chissenefrega!

    Ovviamente sono d'accordo con @DI3GO@ e con me stesso... tocca anche a te di sporcarti le mani..
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  7. #7
    Che ne pensate di questo?


    public void stampaNumeriPrimi (int 1000) {
    int pos = 2;
    while (pos <= 1000) {
    if (primo (pos)) {
    System.out.println (pos);
    }
    pos++;
    }
    }


    protected boolean primo(int numero){
    int pos = (numero + 1) / 2;
    while (pos > 1) {
    if (numero % pos == 0
    && pos != numero
    && pos != 1) {
    return false;
    }
    pos--;
    }
    return true;
    }

    Se il num è primo mi restituisce vero, altrimenti mi restituisce falso.
    Ma in realtà ho bisogno ke se il num è primo va in un textBox, altrimenti va nell'altro! Suppongo ke x andare nei textBox, prima devono essere memorizzaati sti numeri...

    Fino a qua c sn? O sto sbagliando strada?

  8. #8
    Utente di HTML.it L'avatar di @DI3GO@
    Registrato dal
    Nov 2008
    Messaggi
    537
    Analizziamo quel che ha scritto Nosferatu Zodd

    //cambierai il nome del metodo vero??
    public static boolean bol (int a) {

    // ottimo, controllo sia che sia tra i primi 3 ( 3 compreso mi raccomando ) e che sia positivo != 0.
    if (a <= 3) return (a>1);

    //Math.sqrt(a) è un controllo che non varia nel ciclo, quindi lo farei fuori
    //if( ( int )Math.sqrt( a ) == 0 )
    // return false;
    //Quindi se esiste una radice quadrata intera fai tornare false. e tra l'altro non ho capito che fa...Anche perchè ti restituirà sempre un valore intero positivo e per quanto rigurda i numeri negativi li hai già gestiti sopra, quindi totalmente inutile...

    //Altra cosa....i<=1??
    //Se parte da 3....semmai volevi scrivere i<= 1000

    //Devi aggiungere un'altro contatore che partirà da 3 ed andrà sino ad a/2.
    //Questo perchè se io nella tua funzione metto 44 entro nel for e mi torna true...perchè al //controllo della sqrt ottengo false, esco e mi trovo un return true....
    //Quindi il for diventa
    //for( int i = 3; i <= a/2 ; i++ )
    // if( a%i == 0 ) return false;
    //return true
    for (int i = 3, 1 = (int) Math.sqrt(a); i <= 1; i += 2)
    if (a % i == 0)
    return false;
    return true;
    }
    Alla fine te l'ho risolto....Vabbè...cerca di capirlo almeno...
    Nipote: persona incompetente, con le soli doti di "copia/incolla" e la creazione automatica di siti internet ed interfaccie grafiche.Compie lavori apparentemente qualificati e richiesta una modifica sparisce in quatemala con i pochi soldi ottenuti.[...] Fonte la Diegonzelli

  9. #9
    Originariamente inviato da @DI3GO@
    Alla fine te l'ho risolto....Vabbè...cerca di capirlo almeno...
    grazie.
    ho cambiato la bozza iniziale x poter uilizzare solo i num da 1 a 1000....

    public void stampaNumeriPrimi (int 1000) {
    int pos = 2;
    while (pos <= 1000) {
    if (primo (pos)) {
    System.out.println (pos);
    }
    pos++;
    }
    }


    protected boolean primo(int numero){
    int pos = (numero + 1) / 2;
    while (pos > 1) {
    if (numero % pos == 0
    && pos != numero
    && pos != 1) {
    return false;
    }
    pos--;
    }
    return true;
    }

    Se il num è primo mi restituisce vero, altrimenti mi restituisce falso.
    Ma in realtà ho bisogno ke se il num è primo va in un textBox, altrimenti va nell'altro! Suppongo ke x andare nei textBox, prima devono essere memorizzaati sti numeri...

    Fino a qua c sn? O sto sbagliando strada?

  10. #10
    Utente di HTML.it L'avatar di @DI3GO@
    Registrato dal
    Nov 2008
    Messaggi
    537
    Scusa, ma non dovevano essere 2 Thread distinti...Cmq...una volta che ottieni la rispota giusta...true o false fai
    if( numeroPrimo( numero ) ) TextAreaPrimi.add( numero );
    else TextAreaNonPrimi.add( numero );

    ovvio che se devono esser due Thread distinti avrai un if in uno ed un if nell'altro Thread....

    Controlla bene che siano numeri primi....Non ho sinceramente guardato il tuo codice...Prova con un numero alto sicuramente primo ed qualsiasi numero non primo....per il resto dovresti esser a posto
    Nipote: persona incompetente, con le soli doti di "copia/incolla" e la creazione automatica di siti internet ed interfaccie grafiche.Compie lavori apparentemente qualificati e richiesta una modifica sparisce in quatemala con i pochi soldi ottenuti.[...] Fonte la Diegonzelli

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 © 2025 vBulletin Solutions, Inc. All rights reserved.