0434 - Perechi Prime: Difference between revisions

From Bitnami MediaWiki
 
(4 intermediate revisions by the same user not shown)
Line 30: Line 30:
     return flag
     return flag


def is_prime(numar):
def prim(numar):
     if numar < 2:
     if numar < 2:
         return False
         return False
Line 38: Line 38:
     return True
     return True


def print_consecutive_primes(n):
def print_prime_consecutive(n):
     count = 0
     count = 0
     numar = 3
     numar = 3
     while count < n:
     while count < n:
         if is_prime(numar) and is_prime(numar+2):
         if prim(numar) and prim(numar+2):
             print(numar, numar+2)
             print(numar, numar+2)
             count += 1
             count += 1
         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):
Line 53: Line 53:
         print("\nDatele de intrare corespund restricțiilor impuse.\n")
         print("\nDatele de intrare corespund restricțiilor impuse.\n")
         print("Primele", n, "perechi de numere naturale impare consecutive prime sunt:")
         print("Primele", n, "perechi de numere naturale impare consecutive prime sunt:")
         print_consecutive_primes(n)
         print_prime_consecutive(n)
     else:
     else:
         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.
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 '''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 '''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_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 '''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_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.'''
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.'''

Latest revision as of 09:41, 25 April 2023

Cerinţa[edit | edit source]

Se dă un număr natural n. Afișați primele n perechi de numere naturale impare consecutive prime.

Date de intrare[edit | edit source]

Programul citește de la tastatură numărul n.

Date de ieşire[edit | edit source]

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[edit | edit source]

  • 1 ≤ n ≤ 100
  • pentru fiecare pereche p q afișată, p < q

Exemplu[edit | edit source]

Intrare
5
Ieșire
Datele de intrare corespund restricțiilor impuse.
3 5
5 7
11 13
17 19
29 31

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line> 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.")

</syntaxhighlight>

Explicație rezolvare[edit | edit source]

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.