1345 - K Prim
De la Universitas MediaWiki
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
def validare_date(n):
try:
n = int(n)
if n < 1:
print("Numărul introdus trebuie să fie cel puțin 1!")
return False
except ValueError:
print("Intrarea trebuie să fie un număr întreg!")
return False
return True
def is_prime(n):
if n < 2:
return False
if n == 2:
return True
if n % 2 == 0:
return False
for i in range(3, int(n**0.5) + 1, 2):
if n % i == 0:
return False
return True
def main():
with open('kprim.in', 'r') as fin, open('kprim.out', 'w') as fout:
n = fin.readline().strip()
if not validare_date(n):
return
n = int(n)
if n == 1:
fout.write('9')
else:
x = 3
while n > 0:
if is_prime(x):
r = x
n -= 1
x += 1
p = r * r
fout.write(str(p))
if __name__ == '__main__':
main()