Помогите решить задачу по информатике
Вася решил поучаствовать в школьной лотерее. Для этого ему нужно выбрать простое число до 50, но он их совсем не помнит.
Выведи все простые числа до 50. Переходи на новую строку при начале нового десятка (то есть, простые числа до 10 должны быть на первой строчке, а от 10 до 20 — на второй, и т.д.).
По дате
По Рейтингу
Генерируем числа-кандидаты по кольцу (2-3 вполне хватит, но если совсем заморачиваться, то можно сделать и 2-3-5-7). И проверяем делимость.
А для вывода используем генератор с побочным эффектом, который отмечает пройденные десятки - так удастся соблюсти линейную сложность.
123456789101112131415
def genp(N):
yield 2; yield 3
for c in range(5, N + 1, 6):
yield c; yield c + 2
def check(c, primes):
for p in primes:
if p * p > c: return True
if c % p == 0: return False
return True
PRIMES = []
PRIMES.extend(c for c in genp(50) if check(c, PRIMES))
b = STEP = 10
print(' '.join(('' if n < b else (b := b + STEP, '\n')[1]) + "{:2}".format(n) for n in PRIMES))
А на каком языке нужно это сделать?
Или нужен псевдокод?
Больше по теме