Очевидным решением будет просто напечатать их в виде строки, но можно ли написать более короткий код?
Требования:
- Входные данные не должны обрабатываться, а выходные данные должны быть в форме
2 3 5 7 11 13 ...
и т. Д. - Зарезервированные слова в языке не используются вообще
- Язык должен по крайней мере разрешать структурированное программирование и иметь зарезервированные слова (иначе пункт 2 будет спорным).
Сначала я имел в виду исключительно C / C ++, но расширил вопрос, все еще пытаясь предотвратить мошенничество
Ответы:
С, 60 символов
Ограничение «без ключевых слов» здесь не имеет значения. Я почти уверен, что его улучшение, если возможно, не будет достигнуто путем добавления ключевых слов.
Альтернативная версия:
вывод не так хорош, но мне нравится
printf
злоупотребление.Хитрость в обоих решениях заключается в объединении двух циклов (реализованных с помощью рекурсии) в один.
n
это следующий потенциальный простой,m
следующий потенциальный делитель.В каждом рекурсивном вызове мы либо увеличиваем
n
(при установкеm
на предыдущее значение), либо уменьшаемm
.источник
Питон, 108 символов
Python не был создан для этого вызова. Хочешь
print
? Это зарезервировано. Ну, а как насчет использованияstdout
? Ну, это будет стоитьimport
... как вы уже догадались, зарезервировано. Ну ... Я на Unix, так что я могу открыть дескриптор файла 1, который является stdout. Hack!Человек, а итерации? Ничего, кроме
eval
. Без циклов, конечно, но мы не можем даже определить функцию с помощьюdef
илиlambda
. И чтобы добавить оскорбление раны, мы не можем даже использовать понимание списка! Я всегда ищу предлог, чтобы использовать такие вещи, какmap(p.__mod__,...)
в коде гольф ... понимание всегда лучше. До сих пор это так.Теперь вы можете жаловаться, что
exec
это ключевое слово, хотя я не использовал это ключевое слово (я даже неeval
использовалexec
). Ну, вот решение из 117 символов, которое не использует'exec'
.источник
__import__
, но это будет стоить символовJavaScript (80 символов)
Запустите в консоли вашего веб-браузера.
Использовали простое сито, которое оказалось очень уплотненным.
источник
С, 183 символа
Ну, вот первая быстрая попытка. Я считаю, что это должно удовлетворить требования. Я использую простое пробное деление, чтобы найти простые числа, и развернутый цикл, построенный с использованием препроцессора, для его итерации, пока я не найду их достаточно. Количество повторений было изменено так, чтобы было напечатано ровно 128 простых чисел.
источник
C 87 символов
(Я пытался написать его в более функциональном стиле, но моя неспособность использовать что-
return
то убило этот план.)источник
C 134 символа
Вот альтернативное решение, которое пытается избежать использования слов в максимально возможной степени, зарезервировано или иным образом:
Все, что он использует,
printf
иmain
с одним аргументом.источник
Mathematica 50 персонажей
Я не уверен, как интерпретировать «зарезервированные слова» для Mathematica, но я хочу играть, поэтому я буду понимать, что нужно обходиться без встроенных функций для генерации простых чисел или проверки на простоту.
источник
Хаскель, 72 персонажа
По общему признанию, избегать ключевых слов не так уж сложно в Haskell.
источник
K (нгн / к) , 31 байт
Попробуйте онлайн!
источник