0912 - PrimeVecine: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: ==Cerință== Să se scrie o funcție Python care, pentru un număr natural n transmis ca parametru, determină și întoarce prin intermediul unor parametri de ieșire cel mai mare număr prim mai mic decât n și cel mai mic număr prim mai mare decât n. ==Restricții de precizări== *numele funcției va fi '''sub''' *funcția va avea exact trei parametri, în această ordine: *primul parametru,''' n''', reprezintă un număr natural,''' 3 ≤ n < 1.000.000.000''' *'''a'...
 
Line 23: Line 23:
===Rezolvare ver. 1===
===Rezolvare ver. 1===
<syntaxhighlight lang="python" line="1" start="1">
<syntaxhighlight lang="python" line="1" start="1">
def validare(n, a, b):
    return 3 <= int(n) <= 1_000_000_000 and a < int(n) and b > int(n)


def get_prime_numbers(n, a, b):
def get_prime_numbers(n, a, b):
Line 33: Line 36:
         return True
         return True


     for i in range(n-1, 1, -1):
     for i in range(n - 1, 1, -1):
         if is_prime(i):
         if is_prime(i):
             a = i
             a = i
Line 44: Line 47:
             break
             break
         i += 1
         i += 1
   
 
     return a, b
     return a, b


Line 52: Line 55:
     a, b = None, None
     a, b = None, None
     a, b = get_prime_numbers(n, a, b)
     a, b = get_prime_numbers(n, a, b)
     print(f"Cel mai mare numar prim mai mic decat {n} este {a}")
     if validare(n, a, b):
    print(f"Cel mai mic numar prim mai mare decat {n} este {b}")
        print("Datele introduse sunt corecte.")
 
        print(f"Cel mai mare numar prim mai mic decat {n} este {a}")
 
        print(f"Cel mai mic numar prim mai mare decat {n} este {b}")
 
    else:
        print("Datele introduse nu sunt corecte.")
</syntaxhighlight>
</syntaxhighlight>

Revision as of 10:39, 28 March 2023

Cerință

Să se scrie o funcție Python care, pentru un număr natural n transmis ca parametru, determină și întoarce prin intermediul unor parametri de ieșire cel mai mare număr prim mai mic decât n și cel mai mic număr prim mai mare decât n.

Restricții de precizări

  • numele funcției va fi sub
  • funcția va avea exact trei parametri, în această ordine:
  • primul parametru, n, reprezintă un număr natural, 3 ≤ n < 1.000.000.000
  • a și b sunt parametrii prin care funcția va întoarce cele două valori cerute, astfel:
  • a este cel mai mare număr prim mai mic decât n
  • b este cel mai mic număr prim mai mare decât n

Exemplu

Dacă n=28, apelul subprogramului va furniza prin parametrul a valoarea 23, iar prin b valoarea 29.

Important

Soluţia propusă va conţine doar definiţia funcţiei cerute. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.


Rezolvare

Rezolvare ver. 1

<syntaxhighlight lang="python" line="1" start="1"> def validare(n, a, b):

   return 3 <= int(n) <= 1_000_000_000 and a < int(n) and b > int(n)


def get_prime_numbers(n, a, b):

   def is_prime(x):
       if x < 2:
           return False
       for i in range(2, int(x ** 0.5) + 1):
           if x % i == 0:
               return False
       return True
   for i in range(n - 1, 1, -1):
       if is_prime(i):
           a = i
           break
   i = n + 1
   while True:
       if is_prime(i):
           b = i
           break
       i += 1
   return a, b


if __name__ == '__main__':

   n = 28
   a, b = None, None
   a, b = get_prime_numbers(n, a, b)
   if validare(n, a, b):
       print("Datele introduse sunt corecte.")
       print(f"Cel mai mare numar prim mai mic decat {n} este {a}")
       print(f"Cel mai mic numar prim mai mare decat {n} este {b}")
   else:
       print("Datele introduse nu sunt corecte.")

</syntaxhighlight>