0434 - Perechi Prime: Diferență între versiuni

De la Universitas MediaWiki
 
(Nu s-au afișat 2 versiuni intermediare efectuate de același utilizator)
Linia 60: Linia 60:


==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.'''

Versiunea curentă din 25 aprilie 2023 09:41

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.