Numeri primi

di il
17 risposte

Numeri primi

Ciao a tutti, oggi mentre programmavo ho deciso di risolvere un esercizio che trattava i numeri primi purtroppo dopo quasi due ore non sono riuscito a trovare una soluzione adeguata;

la traccia dell'esercizio chiede di stampare su schermo se il numero inserito è primo: il numero è primo ,mentre se non è primo chiede di stampare il numero non è primo;

ho preso in considerazione multipli di 2 e di 3;
ma non funziona con il 2 o con il 3 perchè considera entrambi non primi; come posso risolvere, potete darmi qualche dritta

il mio codice è questo

#include <iostream>

using namespace std;

void inserisciNumero(int& n);
void verificaPrimi(int n);

int main( ){

    int numero;
    inserisciNumero(numero);
    verificaPrimi(numero);
    
    return 0;
}
void inserisciNumero(int& n){
     cout<<"inserisci il numero\n";
     cout<<"numero:   ";
     cin>>n; 
    while(n < 0 ){
        cout<<"ERRORE:valore non valido\n";
        cout<<"RIPROVA\n";
        cout<<"numero:    ";
        cin>>n;
}   
void verificaPrimi(int n){
      if((n % 2 == 0) || ( n % 3 == 0)){
         cout<<"il numero non è primo\n";
     }else{
          cout<<"il numero è primo\n";     
}

17 Risposte

  • Re: Numeri primi

    Ma così fai primi tutti i numeri non divisibili per 2 o 3 tipo 25! Pensa a come trovare un numero primo a mente, cioè: come faresti tu senza computer ma solo con la calcolatrice? Cos'è che rende primo un numero? Poi usa questo metodo e cerca di scriverlo in modo che sia il computer ad eseguirlo e non tu
  • Re: Numeri primi

    I numeri primi sono tutti quei numeri che si possono dividere per 1 e per se stesso

    quindi se provo a seguire questa teoria mi esce così

    if((n % 1 = 0) && (n%n == 0)){
    cout<<"il numero è primo\n";
    }else{
    cout<<"il numero non è primo\n";

    facendo così mi escono tutti primi
  • Re: Numeri primi

    Si certo, perché non è quello che distingue un numero primo da un numero non primo. Un numero è primo se è divisibile SOLO per 1 e per sé stesso, ma tutti i numeri sono divisibili sia per 1 che per sé stessi. Quindi il metodo è un altro, che alla fine porta al risultato che gli unici divisori di quel numero sono 1 e il numero stesso
  • Re: Numeri primi

    @Bwe scusa ... dalle elementari si sa che ogni intero, a partire da 1, è divisibile per 1 e per sé stesso, quindi quel codice che hai scritto è contro ogni logica.

    Devi DIMOSTRARE che NON SIA divisibile per i valori intermedi ! Ok ?
  • Re: Numeri primi

    Per valori intermedi cosa intendi
  • Re: Numeri primi

    oregon ha scritto:


    @Bwe scusa ... dalle elementari si sa che ogni intero, a partire da 1, è divisibile per 1 e per sé stesso, quindi quel codice che hai scritto è contro ogni logica.

    Devi DIMOSTRARE che NON SIA divisibile per i valori intermedi ! Ok ?
    Wow, diretto...
    In sostanza si, è quello che volevo dire. Trova un modo per dimostrare che 1 e x sono gli unici divisori di x. I valori intermedi sono i numeri interi tra 1 e x
  • Re: Numeri primi

    Tra 2 e n-1
  • Re: Numeri primi

    Ok provo e vi faccio sapere
  • Re: Numeri primi

    Puoi fermare le divisioni prima di superare la radice quadrata di n
  • Re: Numeri primi

    oregon ha scritto:


    Puoi fermare le divisioni prima di superare la radice quadrata di n
    Dando per scontato che abbia capito di dover fare delle divisioni...il divisore massimo di un numero dispari è minore o uguale alla sua radice quadrata
  • Re: Numeri primi

    Non ho capito cosa intendi ... spiegati con un esempio ...
  • Re: Numeri primi

    Che i numeri dispari sono divisibili al massimo per la loro radice quadrata, come hai detto tu. Infatti anche io un po' di tempo fa ho scritto una funzione per sapere se un numero è primo, ma la prima versione arrivava fino a n/2. Ma poi l'ho resa più veloce abbassando il limite alla radice quadrata
  • Re: Numeri primi

    Non scriviamo eresie.
    Avendo a, b, q una terna di numeri non nulli (siamo nell'usuale semianello dei naturali), con a > 1, b != 1 e b != a, se b|a (b divide a) e a / b = q si ha ovviamente bq = a e dunque anche q|a: (b, q) costituiscono una coppia di divisori, più raramente indicata come "coppia complementare di divisori" in letteratura.
    Un banale teorema di teoria elementare del numero, dimostrato ad esempio qui, asserisce che per ogni possibile coppia di divisori di un numero composito, il limite superiore per il divisore minore è pari alla radice quadrata del numero dato.
    Il caso limite si ha quando il numero naturale composito è un quadrato perfetto e quindi la coppia di divisori è formata da due valori uguali tra loro e pari appunto alla radice quadrata del numero dato.
  • Re: Numeri primi

    Allora forse ho capito male
Devi accedere o registrarti per scrivere nel forum
17 risposte