Андрей
Высший разум
(483957)
4 года назад
def is_prime(a):
~~if a % 2 == 0 or a <= 1: return a == 2
~~i = 3
~~while i * i <= a:
~~~~if a % i == 0: return False
~~~~i += 2
~~return True
def check(a):
~~a = list(map(int, str(a)))
~~return sum([(v[0] - v[1]) * (v[1] - v[2]) < 0 for v in zip(a, a[1:], a[2:])]) >= len(a) - 2
a, b = map(int, input().split())
print(*[i for i in range(a, b + 1) if is_prime(i) and check(i)])
андрей гаакУченик (11)
4 года назад
проходит только часть тестов ((( на 3 тесте (при чем входные данные не показаны уже ошибка)
Elepsis Eclipse
Гений
(67331)
4 года назад
start, stop = map(int, input().split())
if start % 2 == 0: start += 1
###
def is_camel(k):
k = str(k)
switch = k[0] < k[1]
if (k[0] == k[1]): return False
for i in range(1, len(k) - 1):
if ( (k[i] < k[i + 1]) == switch or k[i] == k[i + 1] ):
return False
switch = not switch
return True
def is_prime(k):
sqrt = int(k ** 0.5)
for i in range(3, sqrt + 1):
if (k % i == 0):
return False
return True
###
numbers = []
for k in range(start, stop + 1, 2):
if (is_camel(k) and is_prime(k)):
numbers.append(k)
print(numbers)
_____________
is_camel(k) and is_prime(k) — Не случайно поставлены в этом порядке. Первая проверка тратит меньше итераций, отсеит значительную часть чисел, и вторая функция даже не станет выполняться.
андрей гаакУченик (11)
4 года назад
у вас тест тоже проходит только первые 2 а на 3 ошибку выдает (у Андрея просто неверный ответ) но у вас за решение засчитало 8/10 баллов, у Андрея 7/10
no nameУченик (30)
4 года назад
кажется я понял в чем ошибка если запихнуть тест от 0 до 20 то выдает число 11, а не должно его выдавать
как это исправить?