0044 - Prime Interval

De la Universitas MediaWiki

Cerinţa

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

Date de intrare

Programul citește de la tastatură numerele numar1 și numar2.

Date de ieşire

Programul afișează pe ecran numărul numere_prime, reprezentând numărul de numere prime din intervalul închis determinat de numar1 și numar2.

Restricții și precizări

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

Exemplu1

Intrare
10 20
Ieșire
Datele de intrare corespund restricțiilor impuse.
4

Explicație

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

Exemplu2

Intrare
5 17
Ieșire
Datele de intrare corespund restricțiilor impuse.
5

Explicație

În intervalul [5,17] sunt 5 numere prime: 5, 7, 11, 13, 17.

Rezolvare

def validare_date(numar1, numar2):
    flag = False
    if 0 < int(numar1) < 100_000 and 0 < int(numar2) < 100_000:
         flag = True
    return flag


def verif_prim(n):
    if n <= 1:
        return False
    else:
        for i in range(2, int(n ** 0.5) + 1):
            if n % i == 0:
                return False
        else:
            return True


def numarare_prime(numar1, numar2):
    if numar1 > numar2:
        numar1, numar2 = numar2, numar1
    numere_prime = 0
    for numar in range(numar1, numar2+1):
        if verif_prim(numar):
            numere_prime += 1
    print(numere_prime)


if __name__ == '__main__':
    numar1, numar2 = input().split()
    if validare_date(numar1, numar2):
        print("\nDatele de intrare corespund restrictiilor impuse.\n")
        numarare_prime(int(numar1), int(numar2))
    else:
        print("Datele de intrare nu corespund restrictiilor impuse.")

Explicație

Programul primește două numere de la tastatură și verifică dacă acestea se încadrează în limitele impuse de funcția validare_date. Dacă numerele sunt valide, programul numără câte numere prime sunt între cele două numere primite, folosind funcția numarare_prime. Pentru a număra numerele prime, se folosește funcția verif_prim, care primește un număr și returnează True dacă numărul este prim, sau False altfel.