Рассмотрим простое число р , записывается в базе 10. памяти из р определяется как число различных простых чисел строго меньше р , которые содержатся в качестве подстрок р .
Вызов
Учитывая неотрицательное целое число n в качестве входных данных, найдите наименьшее простое число p, такое что p имеет память n . То есть найдите наименьшее простое число с ровно n различными строго меньшими простыми числами в качестве подстрок.
вход
Ввод может быть принят в любом стандартном формате. Вы должны поддерживать ввод до наибольшего n , чтобы выход не переполнялся. Для справки: 4294967291 - это наибольшее простое число в 32 битах.
Выход
Вывод может быть записан в STDOUT или возвращен из функции.
Примеры
Число 2 имеет память 0, поскольку оно не содержит строго меньших простых чисел в качестве подстрок.
Число 113 - наименьшее простое число с памятью 3. Числа 3, 13 и 11 - единственные простые подстроки, и ни одно простое число меньше 113 не содержит ровно 3 простых числа в качестве подстрок.
Первые 10 членов последовательности, начиная с n = 0, являются
2, 13, 23, 113, 137, 1237, 1733, 1373, 12373, 11317
Заметка
Это A079397 в OEIS.
Leaderboard
var QUESTION_ID=55406,OVERRIDE_USER=20469;function answersUrl(e){return"http://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"http://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>
Ответы:
Pyth, 22 байта
Демонстрация , Испытательный жгут
Объяснение:
источник
P_Y
иP_T
вместо}YPY
и}TPT
тогда?CJam,
333130 байтЭто полная программа, которая читает входные данные как аргумент командной строки.
Попробуйте онлайн в интерпретаторе CJam .
Тестовый забег
Как это работает
источник
CJam, 40 байт
Попробуйте онлайн
Я уверен, что это шокирует, но на самом деле это дольше, чем решение Денниса. Ну, не совсем, так как у меня даже не было очень больших надежд. Но я все равно хотел попробовать. И поскольку он работает, выглядит довольно разумно для меня, и я считаю, что он достаточно отличается, чтобы хотя бы представлять какой-то интерес, я решил опубликовать его в любом случае.
Основная идея здесь заключается в том, что я строю список простых чисел в цикле, добавляя следующее большее простое число в список на каждом шаге. Для проверки завершения я считаю, сколько элементов, кроме последнего элемента в списке, являются подстрокой последнего элемента. Если это количество равно входу
n
, мы закончили.Объяснение:
источник
Pyth - 25 байт
Вложенный фильтр, внутренний для вычисления памяти, внешний, чтобы найти первый, которому требуется память.
Тестовый пакет .
источник
r2T
вместоtStT
Октава / Матлаб, 126 байт
Попробуйте онлайн
источник
JavaScript ES6, 106 байт
Вот негольфированная версия с объяснением:
Конечно, это ужасно медленно, довольно быстро. Однако ФП заявил, что нет ограничений по времени.
источник
a
иi%c
проверка на первичность. Вы можете сохранить два байта, изменив{return i}else{a.push(i)}
кreturn i;else a.push(i)
Я считаю , анонимные функции разрешены , а также, что позволит сэкономить еще два байта в начале.if...else
логику, поместив ее в цикл for.i++
сi%c
?a
а следующий вызов будет иметь неправильный характер,i
например, когда мы найдем 10 простых чисел, он будет повторяться 10 раз для каждой итерации внешнего цикла.Брахилог (2), 12 байт, языковые проблемы
Попробуйте онлайн!
Ранее это было 13 байт, используя
ᶠd
, но теперь оно получило аббревиатуруᵘ
, сократив его до 12. Так как язык в любом случае устаревает для задачи, и эта функция не была добавлена для этой задачи, в частности, я могу также используй это.Как обычно в Brachylog, это функция, а не полная программа.
объяснение
Это дает нам наименьшее простое число с требуемым свойством, потому что
≜
сначала проверяет значения около 0.источник
Python 2,
163154 байтаЯ слишком устал, чтобы играть в гольф .. Надеюсь, когда я проснусь завтра, я смогу это улучшить.
источник
Юлия, 86 байт
Это практически само за себя. Обведите все положительные целые числа, и каждый раз, когда найдено простое число, суммируйте логический массив, указывающий, являются ли подстановки текущего простыми числами простых чисел меньше текущего. Если он найдет нужное количество совпадений, верните это значение.
Время выполнения становится медленным при n = 11, и, вероятно, для большинства значений выше 11 - в частности, на моем ноутбуке n = 11 занимает около 33 секунд.
источник
2^63
значение0
, так как по умолчанию ЖюлиаInt32
для целочисленных литералов на 32-битной системе - так). Тогда самый короткий способ заставить решение работать на 32-битной системеfor i=1:uint(-1)
, но это стоит на 2 байта больше. Тем не менее, сложно требовать тестирования гольф-решений на всех платформах, так что +1.Haskell,
149147144 байта(127 байт без учета
import
декларации).Вышеуказанный результат был получен с более длинным определением
Новое, на 3 символа короче, определение намного медленнее, я мог получить только 5 первых чисел в последовательности, прежде чем потерять терпение и прервать.
источник
Haskell ,
119118 байтПопробуйте онлайн! Использование:
f 3
урожайность113
.источник
PHP, 124 байта
принимает входные данные из аргумента командной строки; беги с
-r
.сломать
источник
Python 2 , 108 байт
Попробуйте онлайн!
источник