0029 - MaxPrime: 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 cele mai mari două numere naturale prime mai mici 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, 5 ≤ n < 1000000000 *:a și b sunt parametrii prin care funcția va... |
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): | |||
return 5 <= int(n) <= 1000000000 | |||
def sub(n, a, b): | def sub(n, a, b): | ||
Line 28: | Line 31: | ||
if x < 2: | if x < 2: | ||
return False | return False | ||
for i in range(2, int(x**0.5)+1): | for i in range(2, int(x ** 0.5) + 1): | ||
if x % i == 0: | if x % i == 0: | ||
return False | return False | ||
return True | return True | ||
found_primes = [] | |||
for i in range(n-1, 1, -1): | for i in range(n - 1, 1, -1): | ||
if is_prime(i): | if is_prime(i): | ||
found_primes.append(i) | |||
if len( | if len(found_primes) == 2: | ||
break | break | ||
a, b = found_primes[0], found_primes[1] | |||
if a < b: | |||
a, b = b, a | |||
return a, b | |||
a, b | |||
if __name__ == '__main__': | |||
a, b = 0, -1 | |||
# n = input("n=") | |||
n = 28 | |||
if validare(n): | |||
sub(n, a, b) | |||
if a > b: | |||
print("Datele de intrare sunt corecte.") | |||
else: | |||
print("Datele introduse nu sunt corecte.") | |||
else: | |||
print("Datele introduse nu sunt corecte.") | |||
</syntaxhighlight> | </syntaxhighlight> |
Revision as of 10:35, 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 cele mai mari două numere naturale prime mai mici 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, 5 ≤ n < 1000000000
- a și b sunt parametrii prin care funcția va întoarce cele două valori căutate
- parametrii a și b respectă relația a>b
Exemplu
Dacă n=28, apelul subprogramului va furniza prin parametrul a valoarea 23, iar prin b valoarea 19.
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):
return 5 <= int(n) <= 1000000000
def sub(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
found_primes = [] for i in range(n - 1, 1, -1): if is_prime(i): found_primes.append(i) if len(found_primes) == 2: break
a, b = found_primes[0], found_primes[1] if a < b: a, b = b, a
return a, b
if __name__ == '__main__':
a, b = 0, -1 # n = input("n=") n = 28 if validare(n): sub(n, a, b) if a > b: print("Datele de intrare sunt corecte.") else: print("Datele introduse nu sunt corecte.") else: print("Datele introduse nu sunt corecte.")
</syntaxhighlight>