1345 - K Prim
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 cu primele k numere prime și nu este prim.
Restricții și precizări
- 1 ≤ k ≤ 10000
Exemplu
- kprim.in
- 3
- kprim.out
- 49
Explicație
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
<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
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.