0434 - Perechi Prime: Diferență între versiuni

De la Universitas MediaWiki
Linia 47: Linia 47:
         numar += 2
         numar += 2


def main():
if __name__ == '__main__':
     numar = input("Introduceți numărul n: ")
     numar = input("Introduceți numărul n: ")
     if validare_date(numar):
     if validare_date(numar):
Linia 57: Linia 57:
         print("Datele de intrare nu corespund restricțiilor impuse.")
         print("Datele de intrare nu corespund restricțiilor impuse.")


if __name__ == '__main__':
    main()
</syntaxhighlight>
</syntaxhighlight>
==Explicație rezolvare==
==Explicație rezolvare==
Acest cod este un program Python care își propune să găsească primele '''n''' perechi de numere naturale impare consecutive prime.
Acest cod este un program Python care își propune să găsească primele '''n''' perechi de numere naturale impare consecutive prime.

Versiunea de la data 25 aprilie 2023 09:36

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 is_prime(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_consecutive_primes(n):
    count = 0
    numar = 3
    while count < n:
        if is_prime(numar) and is_prime(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_consecutive_primes(n)
    else:
        print("Datele de intrare nu corespund restricțiilor impuse.")

Explicație rezolvare

Acest cod este un program Python care își propune să găsească primele n perechi de numere naturale impare consecutive prime.

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 is_prime 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_consecutive_primes 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_consecutive_primes 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.