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

Cerinţa
Se dă un număr natural n. Afișați primele n perechi de numere naturale impare consecutive prime.

Date de intrare
Programul citește de la tastatură numărul n.

Date de ieşire
Programul afișează pe ecran n primele perechi de numere naturale impare consecutive prime, câte o pereche pe linie, numerele dintr-o pereche fiind separate printr-un spațiu.

Restricţii şi precizări
1 ≤ n ≤ 100
pentru fiecare pereche p q afișată, p < q

Exemplu
Intrare

5
Ieșire

3 5
5 7
11 13
17 19
29 31

C++
fara vectori va rog


Razzvy: Pentru 5 nu trebuia sa-ti afiseze: 3 5 <br> 5 7 <br> 7 11 <br> 11 13 <br> 13 17 ?
Razzvy: </br>
Razzvy: 3 5; 5 7; 7 11; 11 13; 13 17 ?
morcov64: trebuie sa fie perechi consecutive, asa scrie pe pbinfo
Razzvy: ce numar are problema?
morcov64: #434

Răspunsuri la întrebare

Răspuns de Razzvy
7
#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    int n, x, y;

    cin>>n;

    cout<<3<<' '<<5<<'\n';
    n--;
    x = 5;
    y = x;
    while(n)
        {
            int sq = sqrt(x);
            bool prim = true;
            for(int d = 3; d <= sq; d += 2)
                if(x % d == 0)
                    {
                        prim = false;
                        break;
                    }
            if(prim)
                {
                    if(y == x - 2)
                        {
                            cout<<y<<' '<<x<<'\n';
                            y = x;
                            x += 2;
                            n--;
                        }
                    else
                        y = x;
                }
            x += 2;
        }
}

Anexe:

morcov64: nu pot sa deschid atasamentul
morcov64: poti sa scopiezi programul si sa il pui aici?
Razzvy: Gata :)
iuliandeac: se poate si mai usor
iuliandeac: #include <iostream>
using namespace std;
int main()
{
int n,i,nr,c,nrdiv1,nrdiv2,i2;
nr=1; i=1;
cin >> n;
while(nr<=n)
{
i2=i+2;
nrdiv1=0;
for(c=1;c*c<i;c++)
if(i%c==0)
nrdiv1+=2;
if(c*c==i)
nrdiv1++;
nrdiv2=0;
for(c=1;c*c<i2;c++)
if(i2%c==0)
nrdiv2+=2;
if(c*c==i2)
nrdiv2++;
if(nrdiv1==2&&nrdiv2==2)
{
cout <<i<<' '<<i2<<endl;
nr++;
}
i=i+2;
}
return 0;
}
Alte întrebări interesante