Informatică, întrebare adresată de DlakWanted, 9 ani în urmă

Afisarea primelor n numere prime.Program clasa a9-a sem 1.EX:pentru n=4 se va afisa:2,3,5,7


DlakWanted: #include<iostream>
using namespace std;
int n,f,i,d,nrcp,continua;
int main()
{
    cout<<"n=";
    cin>>n;
    f=2;
    d=0;
    nrcp=0;
    continua=1;
    while((f<=2000000000)&&(continua==1))
    {
        for(i=1;i<=f;i++)
        {
            if(f%i==0)
                d=d+1;
        }
        if(d==2)
        {
            cout<<f;
            nrcp=nrcp+1;
        }
        if(nrcp==n)
            continua=0;
        f++;
    }
    return 0;
}
DlakWanted: ce e gresit in program?
antonii: Imi dai voie sa iti sugerez o varianta mai buna? 
antonii: Uita-te mai bine la cod si da-i debug. Nu ai reinitializat "d"-ul!! Am am vazut parca un cod de-al tau in care ai facut acelasi lucru. La fiecare loop al while-ului d-ului tau ii va creste valoarea. La inceput primul numar adica 2 se va impart de doua ori si deci d=2 dar cand programul ajunge la urmatorul nr. prim adica 3 d va avea inaint valoare 2 iar 3 se imparte doar de doua ori si deci d-ul va fi 4(si tot asa). Deci o sa-ti afiseze numai 2.
DlakWanted: posteaza ca comm sa iti dau coroana.mersi mult
DlakWanted: orice comm am priceput ce vrei sa zici de-aia vreau sa dau coom
DlakWanted: coroana

Răspunsuri la întrebare

Răspuns de antonii
1
Variant ta(corecta):
#include<iostream>
using namespace std;
int n,f,i,d,nrcp,continua;
int main()
{
    cout<<"n=";
    cin>>n;
    f=2;
    d=0;
    nrcp=0;
    continua=1;
    while((f<=2000000000)&&(continua==1))
    {
        d=0;
        for(i=1;i<=f;i++)
        {
            if(f%i==0)
                d=d+1;
        }
        if(d==2)
        {
            cout<<f;
            nrcp=nrcp+1;
        }
        if(nrcp==n)
            continua=0;
        f++;
    }
    return 0;



Alte întrebări interesante