Numeri primi senza while o for

di il
15 risposte

Numeri primi senza while o for

Buongiorno
volevo chiedervi un aiuto:
è possibile scrivere un programma in c++ che calcola i primi N numeri primi senza usare il for o il while?
E se sì, come si risolve?
Grazie.

15 Risposte

  • Re: Numeri primi senza while o for

    
    #include <stdio.h>
    #define N_MAX 100
    int main(){
    int d, i = 2, p = 0;
    start:
        d = 2;
    loop:
        if(d >= i - 1){
            printf("%d\n", i);
            p++;
            goto next;
        }
        else if(i % d++ == 0)
            goto next;
        goto loop;
    next:
        i++;
        if(p < N_MAX)
            goto start;
    return 0;
    }
    
  • Re: Numeri primi senza while o for

    Grazie mille!
    L'unico dubbio che ho è come posso sostituire gli start e i goto visto che non li abbiamo ancora studiati.
  • Re: Numeri primi senza while o for

    È compatibile col C++
  • Re: Numeri primi senza while o for

    L'unico dubbio che ho è come posso sostituire gli start e i goto visto che non li abbiamo ancora studiati.
  • Re: Numeri primi senza while o for

    Li sostituisci con dei for o while ma dato che non puoi devi usare la ricorsione
  • Re: Numeri primi senza while o for

    oregon ha scritto:


    Li sostituisci con dei for o while
    Esatto
  • Re: Numeri primi senza while o for

    Ho capito! grazie!
  • Re: Numeri primi senza while o for

    Scusate se ci ritorno ... ma non si potrebbe fare con degli if magari annidati?
    Ed eventualmente, con il for come si fa?
    Grazie!
  • Re: Numeri primi senza while o for

    Quindi il problema è che non vuoi studiare?
    Lo devi fare da solo: sono due righe in croce.

    Che poi basterebbe una ricerchina su google o sul forum stesso
  • Re: Numeri primi senza while o for

    Non è quello il problema!
    è che volevo capire se ci fosse un modo diverso di fare quell'esercizio!
    E vedere come si fa con il for perchè vado non ho capito come ciclare gli N numeri (che siano 10-20-50-100) dato che, ad esempio, i primi 10 numeri primi non equivalgono ai primi 10 numeri ... e allora cercavo di capire quanti numeri mettere nel for!
    Solo per questo volevo vedere il codice con il for!
    Questo postato sopra, l'ho capito ma non tantissimo perchè non ho ancora fatto questi loop e goto.
  • Re: Numeri primi senza while o for

    
    #include <cstdio>
    #define N 100
    bool primo(int n){
        for(int d = 2; d < n; d++)
            if(n % d == 0)
                return false;
        return true;
    }
    int main(){
        for(int p = 0, i = 2; p < N; primo(i) ? p++, printf("%d\n", i++) : i++);
        return 0;
    }
    
  • Re: Numeri primi senza while o for

    Ma perché non provi a scrivere il codice con il for re poi se ne discute? Sinceramente non lo capisco perchè attendere che altri ti scrivano il codice
  • Re: Numeri primi senza while o for

    Hai ragione! E l'ho fatta così con il for. L'ho fatta per i primi 50 numeri fermando il contatore al 50° numero primo.
    In alternativa si poteva prendere un numero più piccolo/grande e ne calcolava di più/di meno.
    Mi è stato d'aiuto il primo codice postato perchè non sapevo bene come verificare il numero primo ma ci sono riuscito!
    Grazie mille per l'aiuto e lo sprono a fare da solo!


    #include <iostream>
    using namespace std;

    int main(){

    int numero;
    int resto;
    int contatore;

    cout<<"I primi 50 numeri primi sono: " << endl;

    for(int i=1;i<=227;i++)
    {
    contatore=0;

    for(int j=1;j<=i;j++)
    {
    resto=i%j;

    if(resto==0)
    contatore++;
    }

    if(contatore<3)
    {

    if(i==numero)
    cout << i << endl;

    else
    cout << i << endl;
    }

    }

    return 0;
    }
  • Re: Numeri primi senza while o for

    ale98 ha scritto:


    for(int i=1;i<=227;i++)
    se vuoi i primi 50 è
    for(int i=2;i<=229;i++)
    oppure
    
    for(int i=2, p=0;p<50;i++)
    [...]
    if(contatore<3)
    {
        p++;
        cout << i << endl;
    }
    
Devi accedere o registrarti per scrivere nel forum
15 risposte