4025 - Doua Mii 22: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: == Cerința == Se dau K numere naturale nenule, mai mici sau egale cu 20222022. Pentru fiecare număr n dintre acestea, se cere aflarea celui de-al n-lea număr natural prim cu 2022. == Date de intrare == Programul citește de la tastatură numărul K, iar apoi K numere naturale, separate prin spații. == Date de ieșire == Programul va afișa pe ecran, pentru fiecare număr n dintre cele K numere date, al n-lea număr natural, prim cu 2022. == Restricții și precizări == *...
 
No edit summary
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
== Cerința ==
== Cerința ==
Se dau K numere naturale nenule, mai mici sau egale cu 20222022. Pentru fiecare număr n dintre acestea, se cere aflarea celui de-al n-lea număr natural prim cu 2022.
Se dau '''K''' numere naturale nenule, mai mici sau egale cu '''20222022'''. Pentru fiecare număr n dintre acestea, se cere aflarea celui de-al '''n'''-lea număr natural prim cu '''2022'''.
== Date de intrare ==
== Date de intrare ==
Programul citește de la tastatură numărul K, iar apoi K numere naturale, separate prin spații.
Programul citește de la tastatură numărul '''K''', iar apoi '''K''' numere naturale, separate prin spații.
== Date de ieșire ==
== Date de ieșire ==
Programul va afișa pe ecran, pentru fiecare număr n dintre cele K numere date, al n-lea număr natural, prim cu 2022.
Programul va afișa pe ecran, pentru fiecare număr '''n''' dintre cele '''K''' numere date, al '''n'''-lea număr natural, prim cu '''2022'''.
== Restricții și precizări ==
== Restricții și precizări ==
*1 ⩽ K ⩽ 2022
*'''1 ⩽ K ⩽ 2022'''
*cele K numere citite vor fi mai mici sau egale cu 20222022
*cele '''K''' numere citite vor fi mai mici sau egale cu '''20222022'''
== Exemplu 1 ==
== Exemplu 1 ==
; Intrare
; '''Intrare'''
: 3
: 3
: 4 23 198
: 4 23 198
; Ieșire
; '''Ieșire'''
: Datele de intrare corespund restricțiilor impuse
: 11 67 595  
: 11 67 595  
<br>
<br>
== Explicatie ==
== Explicatie ==
Şirul numerelor naturale, prime cu 2022, este format din numerele: 1, 5, 7, 11, 13, 17, 19, 23, 25, 29, 31, ....
Şirul numerelor naturale, prime cu '''2022''', este format din numerele: '''1, 5, 7, 11, 13, 17, 19, 23, 25, 29, 31, ....'''
== Exemplu 2 ==
== Exemplu 2 ==
; Intrare
; '''Intrare'''
: 0
: 0
; Ieșire
; '''Ieșire'''
: Nu au fost respectate cerintele impuse
: Datele introduse nu respecta restrictiile.
<br>
<br>
== Rezolvare ==
== Rezolvare ==
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>
#4025 - DouaMii22
#4025 - DouaMii22
def is_prime(num):
def este_prim_cu_2022(numar):
     if num < 2:
     if numar < 2:
         return False
         return False
     for i in range(2, int(num**0.5) + 1):
     for i in range(2, int(numar**0.5) + 1):
         if num % i == 0:
         if numar % i == 0:
             return False
             return False
     return True
     return True


def find_nth_prime_with_2022(n):
def afla_n_prim_cu_2022(n):
     primes = []
     numar = 1
     num = 1
     numere_prim_cu_2022 = []
     while len(primes) < n:
     while len(numere_prim_cu_2022) < n:
         if is_prime(num) and num % 2022 != 0:
         if este_prim_cu_2022(numar):
             primes.append(num)
             numere_prim_cu_2022.append(numar)
         num += 1
         numar += 1
     return primes[-1]
     return numere_prim_cu_2022[-1]


def validate_input(k, numbers):
try:
    # Citirea datelor de intrare
    k = int(input("Introduceti numarul K: "))
     if 1 <= k <= 2022:
     if 1 <= k <= 2022:
         for num in numbers:
        numere = list(map(int, input(f"Introduceti cele {k} numere, separate prin spatiu: ").split()))
             if 1 <= num <= 20222022:
 
                 continue
        # Verificarea și afișarea rezultatelor
         for n in numere:
             if 1 <= n <= 20222022:
                 rezultat = afla_n_prim_cu_2022(n)
                print(f"Pentru n={n}, al {n}-lea numar prim cu 2022 este: {rezultat}")
             else:
             else:
                 return False
                 print("Datele introduse nu respecta restrictiile.")
        return True
                break
    return False
     else:
 
        print("Datele introduse nu respecta restrictiile.")
# Citirea datelor de la tastatură
try:
    k = int(input("Introduceți numărul K: "))
     numbers = list(map(int, input(f"Introduceți cele {k} numere naturale, separate prin spații: ").split()))
except ValueError:
except ValueError:
     print("Datele introduse nu sunt corecte. Introduceți numere valide.")
     print("Datele introduse nu sunt valide.")
    exit()
 
# Verificarea dacă datele introduse respectă restricțiile
if not validate_input(k, numbers):
    print("Datele introduse nu respectă restricțiile.")
else:
    # Afișarea rezultatelor
    results = [find_nth_prime_with_2022(n) for n in numbers]
    print(" ".join(map(str, results)))
 
</syntaxhighlight>
</syntaxhighlight>

Latest revision as of 12:56, 5 January 2024

Cerința[edit | edit source]

Se dau K numere naturale nenule, mai mici sau egale cu 20222022. Pentru fiecare număr n dintre acestea, se cere aflarea celui de-al n-lea număr natural prim cu 2022.

Date de intrare[edit | edit source]

Programul citește de la tastatură numărul K, iar apoi K numere naturale, separate prin spații.

Date de ieșire[edit | edit source]

Programul va afișa pe ecran, pentru fiecare număr n dintre cele K numere date, al n-lea număr natural, prim cu 2022.

Restricții și precizări[edit | edit source]

  • 1 ⩽ K ⩽ 2022
  • cele K numere citite vor fi mai mici sau egale cu 20222022

Exemplu 1[edit | edit source]

Intrare
3
4 23 198
Ieșire
11 67 595


Explicatie[edit | edit source]

Şirul numerelor naturale, prime cu 2022, este format din numerele: 1, 5, 7, 11, 13, 17, 19, 23, 25, 29, 31, ....

Exemplu 2[edit | edit source]

Intrare
0
Ieșire
Datele introduse nu respecta restrictiile.


Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line>

  1. 4025 - DouaMii22

def este_prim_cu_2022(numar):

   if numar < 2:
       return False
   for i in range(2, int(numar**0.5) + 1):
       if numar % i == 0:
           return False
   return True

def afla_n_prim_cu_2022(n):

   numar = 1
   numere_prim_cu_2022 = []
   while len(numere_prim_cu_2022) < n:
       if este_prim_cu_2022(numar):
           numere_prim_cu_2022.append(numar)
       numar += 1
   return numere_prim_cu_2022[-1]

try:

   # Citirea datelor de intrare
   k = int(input("Introduceti numarul K: "))
   if 1 <= k <= 2022:
       numere = list(map(int, input(f"Introduceti cele {k} numere, separate prin spatiu: ").split()))
       # Verificarea și afișarea rezultatelor
       for n in numere:
           if 1 <= n <= 20222022:
               rezultat = afla_n_prim_cu_2022(n)
               print(f"Pentru n={n}, al {n}-lea numar prim cu 2022 este: {rezultat}")
           else:
               print("Datele introduse nu respecta restrictiile.")
               break
   else:
       print("Datele introduse nu respecta restrictiile.")

except ValueError:

   print("Datele introduse nu sunt valide.")

</syntaxhighlight>