0434 - Perechi Prime

De la Universitas MediaWiki
Versiunea pentru tipărire nu mai este suportată și poate avea erori de randare. Vă rugăm să vă actualizați bookmarkurile browserului și să folosiți funcția implicită de tipărire a browserului.

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.