Comments 13
Вот 5 строк, без сторонних библиотек:
for x in range(7654321, 0, -2):
for p in range(3, int(x ** .5), 2):
if not x % p: break
else:
if "1234567".startswith(''.join(sorted(str(x)))): exit(print(x))
Крохоборствуя на пробелах и выкинув корень, можно выжать 140 символов, влезть в рамки изначального ограничения твиттера. Но зачем?
Кратчайшее решение все же
print(7652413)
Если мы используем знания о делимости и проч...
import itertools as t,sympy
print([j for i in(7,4)for j in map(''.join,t.permutations('987654321'[-i:]))if sympy.isprime(int(j))][0])
Ваше решение, сокращенное и в одну строку. 134 символа.
ещё в решении на разных языках на ресурсе rosettacode.org :)
(решение представлено всего на 13-ти языках)
Предлагаю наибольшее пан-цифровое простое число называть пан-атаман-цифровое число.
каждая из цифр от 1 до n используется в нем ровно один раз
максимальное пан-цифровое число – это 987_654_321
Я не понял, откуда возникло ограничение 10-тичной системой счисления.
Спасибо, что напомнили об этом сборнике задач
Кто не в курсе - projecteuler.net
Странное укорачивание. Так можно запихнуть указанную функцию в библиотеку, которую обозвать одной буквой, потом вызвать ее импортом и выполнить :)
Будет что-то в духе:
import m
m.m()
Python: самое короткое решение 41 задачи из проекта Эйлера