Rezolvare completă PbInfo #44 PrimeInterval

Cerinţa

Să se scrie un program care citește două numere naturale a și b și determină câte numere prime sunt în intervalul închis determinat de a și b.

Date de intrare

Programul citește de la tastatură numerele a și b.

Date de ieşire

Programul afișează pe ecran numărul n, reprezentând numărul de numere prime din intervalul închis determinat de a și b.

Restricţii şi precizări

  • 0 < a, b < 100.000
  • numerele citite nu respectă obligatoriu relația a ≤ b
  • un număr natural este prim dacă are exact doi divizori distincți: 1 și el însuși.

Exemplu

Intrare

10 20

Ieșire

4

Explicație

în intervalul [10,20] sunt 4 numere prime: 11, 13, 17, 19.

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema PrimeInterval:

#include <iostream>
using namespace std;

int main(){
    int x , y;
    //citim numerele
    cin >> x >> y;
    
    //ordonam cele doua numere
    if(x>y)
    {
        //interschimbare
        int aux = x;
        x = y;
        y = aux;
    }
    
    //initializam contorul cu zero
    int nrp = 0;
    
    //parcurgem intevalul [x,y]
    for(int i = x ; i <= y; i++){
        //verificam daca i este prim
        
        //peresupunem ca este prim
        int prim = 1;
        //0 si 1 nu sunt prime
        if(i<2)
            prim = 0;
        //numerele pare mai mari decat 2 nu sunt prime
        if(i % 2 == 0 && i > 2)
            prim = 0;
        //cautam un divizor impar 
        for(int d = 3; d * d <= i && prim == 1 ; d ++)
            if(i % d == 0)  // daca il gasim
                prim = 0;   //i nu este prim
        
        //daca numarul este prim, marim contorul
        if(prim == 1)
            nrp ++;
    }
    
    //afisam contorul
    cout << nrp;
    return 0;
}

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #44 PrimeInterval

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #44 PrimeInterval de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!