fbpx

Problema #44 – PrimeInterval – Rezolvari PBInfo

de Mihai-Alexandru

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 <100000
  • 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.

#include <bits/stdc++.h>
using namespace std;

int prim(int n);

int main ()
{
    int a,b,cnt=0;
    cin >> a >> b;
    if (a > b)
    {
        int c=a;
        a=b;
        b=c;
    }
    for (int i = a ; i <= b; ++i)
    {
        if (prim(i))
        cnt++;
    }
    cout << cnt;
    return 0;
}
int prim(int n)
{
    int cnt=0; 
    for (int i = 1; i * i <= n; ++i)
    {
        if (n%i==0)
        cnt+=2;
        if (i*i==n)
        cnt--;
    }
    if (cnt==2)
    return 1;
    else
    return 0;
}
Comentarii

S-ar putea sa iti placa