Напишите программу, которая принимает входные данные (которые могут быть или не быть простыми), и перечисляет непосредственное простое число, следующее за ним и предшествующее ему.
Пример ввода:
1259
Пример вывода:
1249 1277
Кратчайшая программа выигрывает. Необходимо выполнить в течение 10 секунд на современном настольном ПК. Входы будут ограничены до 10 000 максимум.
n
на простоту, создаваяn
длинные строковые символы и проверяя их на соответствие регулярному выражению, абсолютно ужасно?Ответы:
Perl 5.10 (perl -E), 65 символов
Половина кредита (по крайней мере) должна идти в @J B.
источник
qr
, -4 для того , чтобы не нуждаться в разделителях позже).qr
. LMGTFY: 81 символ$m=$n=<>;$p='^1$|(^11+)\1+$';0while(1x--$m)=~$p;0while(1x++$n)=~$p;print"$m $n$/"
perl -E'$m=<>;for(-1,1){$n=$m;0while(1x($n+=$_))=~q<^1$|(^11+)\1+$>;say$n}'
Математика , 19
источник
Mathematica: 28 символов
Применение
источник
Питон - 93
Основано на ответе fR0DDY . Я в основном слил строки 4 и 5 и сократил строку 2, используя другой метод.
источник
Python
116111109 символовисточник
f=lambda n:not(all(pow(b,n-1,n)<2for b in(3,5,7,13)))
n=input()-1
иm=n+2
, сохраняет 3 символа ... я думаю.not(all(...))
,any(...)
изменив логическое значение108
.J, 22 символа
источник
Haskell: 99
пример
источник
Python, 116
139символов (двойной отступ - tab-char)Использует хорошее оле Сито Эратосфена
Редактирует и (спасибо TON @JPvdMerwe). Должен работать с простыми числами сейчас.
оригинал
источник
a=range(9999)
наa=range(n)
. Также в строке 2 вам не нужно переходитьa
к лямбде, вы можете просто использовать ее. Это должно сильно сбрить.Scala 119:
ungolfed:
21.2s для запуска всех 9998 целых с 3 до 10.000
источник
Желе , 5 байт (не конкурирует?)
Попробуйте онлайн!
источник
Swift
190187185110Свифт очень плох в код-гольфе, но я все равно попробовал: D
Он становится короче и короче ... (Спасибо @HermanLauenstein за удаление 75 байт)
источник
var a=Int(readLine()!)!;for b in[-1,1]{var n=a,c=0;while c<1{n+=b;c=1;for i in 2..<n{if n%i<1{c=0}}};print(n)}
(я еще не проверил это должным образом)Python (123)
ПРИМЕЧАНИЕ:
Primes
модуль был написан мной, но он существовал до того, как был задан этот вопрос. Это НЕ было написано для этого. Тем не менее, это было сочтено несправедливым, поэтому вот обновленная версия.Python (215)
источник
123
Primes
; против духа кода гольф.Stax , 7 байт
Запустите и отладьте его
ASCII эквивалент:
Встроенные модули.
источник
JavaScript (Node.js) , 79 байт
Попробуйте онлайн!
источник
C (gcc) , 98 байт
Попробуйте онлайн!
Полная версия программы, C (gcc) , 116 байт
Попробуйте онлайн!
Обе версии предполагают, что мы никогда не проверяем 1 на простоту, что происходит только в том случае, если входное значение равно 2 или ниже, и в этом случае выходное значение в любом случае будет неопределенным.
источник