1345 - K Prim: Difference between revisions
Paul Matei (talk | contribs) Pagină nouă: == Cerinţa == Să se scrie un program care citește un număr natural '''k''' și afișează cel mai mic număr natural '''n''' mai mare decât '''1''', care nu este divizibil cu primele '''k''' numere prime și nu este prim. Fișierul de intrare '''kprim.in''' conține pe prima linie numărul '''k'''. == Date de ieşire == Fișierul de ieșire '''kprim.out''' va conține pe prima linie numărul '''n''', reprezentând cel mai mic număr natural '''n''',care nu este divizibil... |
Paul Matei (talk | contribs) No edit summary |
||
Line 17: | Line 17: | ||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
import math | |||
def validare_date(n): | def validare_date(n): | ||
if isinstance(n, int) and n > 0: | |||
return True | |||
return False | |||
def | def prim(n): | ||
if n | if n == 0 or n == 1: | ||
return False | return False | ||
if n == 2: | if n == 2: | ||
Line 35: | Line 31: | ||
if n % 2 == 0: | if n % 2 == 0: | ||
return False | return False | ||
for i in range(3, int(n | for i in range(3, int(math.sqrt(n))+1, 2): | ||
if n % i == 0: | if n % i == 0: | ||
return False | return False | ||
return True | return True | ||
if __name__ == '__main__': | |||
n = int(input("Introduceti un numar natural: ")) | |||
if validare_date(n): | |||
if n == 1: | if n == 1: | ||
print(9) | |||
else: | else: | ||
x = 3 | x = 3 | ||
while n > 0: | while n > 0: | ||
if | if prim(x): | ||
r = x | r = x | ||
n -= 1 | n -= 1 | ||
x += 1 | x += 1 | ||
p = r * r | p = r * r | ||
print(p) | |||
else: | |||
print("\nDatele de intrare nu corespund restrictiilor impuse.") | |||
</syntaxhighlight> | </syntaxhighlight> | ||
==Explicație rezolvare== | |||
Acest program calculează pătratul celui de-al n-lea număr prim, unde '''n''' este un număr natural citit de la tastatură. Înainte de a începe calculele, programul verifică dacă datele de intrare sunt valide, adică dacă '''n''' este un număr natural pozitiv. Dacă datele sunt invalide, programul va afișa un mesaj corespunzător. Dacă datele sunt valide și '''n''' este egal cu 1, programul va afișa numărul 9. În caz contrar, programul va căuta cel de-al n-lea număr prim și va calcula pătratul acestuia, folosind o funcție care verifică dacă un număr dat este prim. Rezultatul este apoi afișat la ecran. |
Latest revision as of 19:16, 9 April 2023
Cerinţa[edit | edit source]
Să se scrie un program care citește un număr natural k și afișează cel mai mic număr natural n mai mare decât 1, care nu este divizibil cu primele k numere prime și nu este prim. Fișierul de intrare kprim.in conține pe prima linie numărul k.
Date de ieşire[edit | edit source]
Fișierul de ieșire kprim.out va conține pe prima linie numărul n, reprezentând cel mai mic număr natural n,care nu este divizibil cu primele k numere prime și nu este prim.
Restricții și precizări[edit | edit source]
- 1 ≤ k ≤ 10000
Exemplu[edit | edit source]
- kprim.in
- 3
- kprim.out
- 49
Explicație[edit | edit source]
Primele 3 numere prime sunt 2, 3, 5. Numerele care nu sunt divizibile cu 2, 3 sau 5 sunt : 7, 11, 13, 17, 19, 23, 31, 37, 41, 47, 49, … 49 este cel mai mic număr care nu este prim
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line> import math
def validare_date(n):
if isinstance(n, int) and n > 0: return True return False
def prim(n):
if n == 0 or n == 1: return False if n == 2: return True if n % 2 == 0: return False for i in range(3, int(math.sqrt(n))+1, 2): if n % i == 0: return False return True
if __name__ == '__main__':
n = int(input("Introduceti un numar natural: ")) if validare_date(n): if n == 1: print(9) else: x = 3 while n > 0: if prim(x): r = x n -= 1 x += 1 p = r * r print(p) else: print("\nDatele de intrare nu corespund restrictiilor impuse.")
</syntaxhighlight>
Explicație rezolvare[edit | edit source]
Acest program calculează pătratul celui de-al n-lea număr prim, unde n este un număr natural citit de la tastatură. Înainte de a începe calculele, programul verifică dacă datele de intrare sunt valide, adică dacă n este un număr natural pozitiv. Dacă datele sunt invalide, programul va afișa un mesaj corespunzător. Dacă datele sunt valide și n este egal cu 1, programul va afișa numărul 9. În caz contrar, programul va căuta cel de-al n-lea număr prim și va calcula pătratul acestuia, folosind o funcție care verifică dacă un număr dat este prim. Rezultatul este apoi afișat la ecran.