Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    11

    numero primo

    salve a tutti ,sto cercando di fare una semplice funzione che verifichi se un numero immesso sia primo mi potete dare una mano ?
    come suggerimento il testo mi dice di usare semplici divisioni per numeri interi...ma non ci arrivo.. è gradito qualsiasi indizio su come fare ...grazie ancora!

    MAX
    gdm

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    23,831

    Moderazione

    Il linguaggio? Hai letto il Regolamento? :master:
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Delphi Succinctly (e-book)

  3. #3

    Re: numero primo

    Originariamente inviato da maxx1
    salve a tutti ,sto cercando di fare una semplice funzione che verifichi se un numero immesso sia primo mi potete dare una mano ?
    come suggerimento il testo mi dice di usare semplici divisioni per numeri interi...ma non ci arrivo.. è gradito qualsiasi indizio su come fare ...grazie ancora!

    MAX
    VVoVe: al di là del linguaggi il senso è....

    fare un ciclo ke parta da 2 (tanto per uno solo tutti divisibili no?) ed arrivi alla metà del numero (arrodondata per eccesso ad intero) (è suficiente per sapere se è primo o quali divisori ha)...fai il mod (ovvero il resto) della divisione per quel numero e esci quando trovi il primo num divisore.

    es.: 10
    2 - sì - > ESCE non è PRIMO


    es.: 7
    2 - no (1°div - potrest uscire quando trova il primo, invece d contarli)
    4 - no
    PRIMO

    VaneX

    Spero d aver scritto in modo kiaro e senza cavolate! :-)

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    11

    numero primo

    ringrazio per l'appunto il moderatore, il linguaggio è il C++ ,comunque gradivo anche una risposta in termini di algoritmo ringrazio in tal senso Vanessa...ma se qualcuno ha un idea migliore mi farebbe una cortesia..Max
    gdm

  5. #5
    ...cosa ha ke nn va la mia? il numero d operazioni sono al minimo 1 (se trova subito divisore) e al max n/2.

    VaneX

    in effetti...
    da un altro forum:

    http://www.itsistemi.net/viewtopic-271071.html
    E' sufficiente qualche semplice accorgimento per migliorare
    notevolmente le prestazioni:

    codice:
    bool calcolo(int n)
    {
    if (! n%2) return false;
    
    int radice = int( sqrt(n) )
    
    for (int j=3; j<=radice; j+=2)
    {
    if (!n%j)  return false;
    }
    return true;
    }
    
    con queste modifiche vengono considerati soltanto i numeri dispari fino
    alla radice di n·
    Per es· per testare se 2010545359 e' primo bastano circa 22 mila
    confronti invece di 2 miliardi‚ e il tempo di esecuzione passa dal
    minuto a qualche millisecondo·
    Ovviamente per numeri molto piu' grandi (centinaia di cifre) il
    problema resta comunque intrattabile·
    
    Saluti‚
    
    Fabio

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    11

    numero primo

    grazie lo provo subito

    max
    gdm

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    11

    numero primo

    ho provato questa semplice applicazione ...ma non mi funziona..mi ci dai un occhio?
    grazie max

    #include <iostream.h>
    #include <stdlib.h>
    int test_primo(int n)
    {
    int i;
    for(i=2;i<n;i++)
    {
    if (!n%i)
    return 1;
    }
    return 0;
    }
    int main()
    {
    int n;
    cin>>n;
    cout<<test_primo(n);

    system("PAUSE");
    return 0;
    }
    gdm

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    751

    Re: numero primo

    if (!n%i)
    questo equivale a if ((!n) % i) che, davvero,
    non ha senso: !n è sempre 0 se n != 0...e non puoi
    dividere 0 per i sperando di ottenere un resto

    cambialo in if (!(n % i))


  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    11

    numero primo

    sei veramente un grande!!!!

    avevo la soluzione sotto gli occhi....e non la vedevo.
    ( è il caso che ridia un'occhiata alla tabella delle verità e agli operatori)

    Grazie ancora

    maxx
    gdm

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