Scrivere un programma in c++ che stampi i primi n numeri primi

di Anonimizzato31536 il
8 risposte
Ragazzi non riesco a scrivere il programma scritto nel titolo, devo farlo solo con la libreria <<iostream>>. Sono arrivato a un punto che stampa solo i multipli di 2 qualche consiglio, grazie

8 Risposte

  • Inizia a postare cosa hai fatto fino ad ora altrimenti nessuno potrà aiutarti
  • Per ora ho fatto questo che stampa se un numero è primo o no però non so come fare a stampare i primi n numeri primi



    #include <iostream>

    using namespace std;

    int main()
    {
    int n,i;
    bool flag;

    cout<<"inserisci un numero: ";
    cin>>n;

    i=2;
    flag=true;

    while (i<=n/2 && flag==true)
    {
    if (n%i==0)
    {
    flag=false;
    }
    i=i+1;
    }
    if (flag==false)
    cout<<"non e' primo";

    else
    cout<<"e' primo";


    return 0;
    }
  • Hai studiato le funzioni? Sapresti trasformare questo codice in modo che diventi una funzione da chiamare per capire se un certo numero è primo o no?
  • No
  • Se devi fare senza funzioni potresti fare una cosa del tipo:

    sia N la quantità di numeri primi che devi stampare (immessa ad esempio dall'utente via console);
    sia numeriPrimiTrovati la quantità di numeri primi stampati finora, che partirà da 0;
    sia attuale il numero che consideri in una determinata iterazione, che varrà inizialmente 2 (come hai già fatto);
    finchè numeriPrimiTrovati < N
    - verifichi se attuale è un numero primo.
    - Se lo è: lo stampi ed incrementi numeriPrimiTrovati di 1
    - Sia che lo sia sia che non lo sia: incrementi attuale di 1.

    Per verificare se un numero è primo oppure no basta guardare la (grazie al link fornito da Andrea Quaglia)
  • Ora provo, grazie dei consigli
  • {
    int n,NumeriPrimiTrovati,attuale,divisore;
    bool flag;

    cout<<"inserire la quantita' di numeri che si vogliono trovare";
    cin>>n;

    NumeriPrimiTrovati=0;
    attuale=2;

    do {
    flag=true;
    divisore=2;
    while (divisore<=attuale/2 && flag==true)
    {
    if (attuale%divisore==0)
    {
    flag=false;
    }
    divisore=divisore+1;
    }
    if (flag==true)
    {
    cout<<attuale<<endl;
    NumeriPrimiTrovati=NumeriPrimiTrovati+1;
    }
    attuale=attuale+1;
    } while (NumeriPrimiTrovati<n);

    return 0;
    }

    ho fatto grazie mille
Devi accedere o registrarti per scrivere nel forum
8 risposte