0434 - Perechi Prime

De la Universitas MediaWiki

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
Datele de intrare corespund restricțiilor impuse.
3 5
5 7
11 13
17 19
29 31

Rezolvare

import math

def validare_date(numar):
    flag = False
    if numar.isdigit():
        if 0 <= int(numar) <= 100:
            flag = True
    return flag

def prim(numar):
    if numar < 2:
        return False
    for i in range(2, int(math.sqrt(numar))+1):
        if numar % i == 0:
            return False
    return True

def print_prime_consecutive(n):
    count = 0
    numar = 3
    while count < n:
        if prim(numar) and prim(numar+2):
            print(numar, numar+2)
            count += 1
        numar += 2

if __name__ == '__main__':
    numar = input("Introduceți numărul n: ")
    if validare_date(numar):
        n = int(numar)
        print("\nDatele de intrare corespund restricțiilor impuse.\n")
        print("Primele", n, "perechi de numere naturale impare consecutive prime sunt:")
        print_prime_consecutive(n)
    else:
        print("Datele de intrare nu corespund restricțiilor impuse.")

Explicație rezolvare

Funcția validare_date primește un număr sub formă de șir de caractere și returnează o valoare booleană, True dacă numărul este un număr natural între 0 și 100, inclusiv, altfel returnează False.

Funcția prim primește un număr și returnează o valoare booleană, True dacă numărul este prim, altfel returnează False. Funcția utilizează o buclă for care verifică dacă numărul este divizibil cu orice număr între 2 și rădăcina pătrată a numărului dat, iar dacă este, returnează False.

Funcția print_prime_consecutive primește un număr întreg n și afișează primele n perechi de numere naturale impare consecutive prime. Funcția începe cu numărul 3 și, utilizând o buclă while, verifică dacă numerele sunt prime și consecutive impare și le afișează în caz afirmativ. Dacă găsește o pereche, crește numărul de perechi găsite (count) cu 1 și trece la următorul număr.

Funcția main începe prin a cere utilizatorului să introducă un număr întreg n și apoi verifică dacă acesta este valid utilizând funcția validare_date. Dacă numărul este valid, afișează mesajul Datele de intrare corespund restricțiilor impuse. și apoi utilizează funcția print_prime_consecutive pentru a afișa primele n perechi de numere naturale impare consecutive prime. Dacă numărul nu este valid, afișează mesajul Datele de intrare nu corespund restricțiilor impuse.