0912 - PrimeVecine: Difference between revisions
Cuceu Andrei (talk | contribs) 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'... |
Vardai Erwin (talk | contribs) |
||
| 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("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>