fbpx

Problema #908 – AfisareNumerePrime – Rezolvari PBInfo

de Mihai-Alexandru

Cerinţa

Scrieți definiția completă a funcției C++ afisare care primește doi parametri a și b și afișează pe ecran, în ordine crescătoare, numerele naturale prime cuprinse între a și b, inclusiv acestea.

Restricţii şi precizări

  • numele funcției va fi afisare
  • funcția va avea exact doi parametri: a, respectiv b
  • 0 < a , b <= 1000
  • numerele vor fi afișate pe aceeași linie, separate prin câte un spațiu

Exemplu

Dacă a=7 și b=2, apelul subprogramului va afișa pe ecran:

2 3 5 7

Important

Soluţia propusă va conţine doar definiţia funcţiei cerute. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.

bool prim(int n){
    int d = 2, cnt = 1;
    while(n > 1){
        int p = 0;
        while(n % d == 0)
            n /= d, p++;
        cnt *= (p + 1);
        d++;
        if(d * d > n)
            d = n;
    }
    return cnt == 2;
}

void afisare(int a, int b){
    if(a > b)
        swap(a, b);
    for(int i = a; i <= b; ++i)
        if(prim(i))
            cout << i << ' ';
}
Comentarii

S-ar putea sa iti placa