Простое число является слабым, если ближайшее другое простое число меньше его. Если есть связь, простое число не является слабым.
Например, 73 - слабое простое число, потому что 71 - простое, а 75 - составное.
задача
Напишите некоторый компьютерный код, который, если задано простое число больше 2, будет определять, является ли оно слабым простым. Это стандартная проблема решения, поэтому вы должны вывести два уникальных значения для каждого из двух случаев (например, weak
и not weak
).
Это код-гольф, поэтому применяются стандартные правила для тега.
OEIS
Вот первые 47 слабых простых чисел:
3, 7, 13, 19, 23, 31, 43, 47, 61, 73, 83, 89, 103, 109, 113, 131, 139, 151, 167, 181, 193, 199, 229, 233, 241, 271, 283, 293, 313, 317, 337, 349, 353, 359, 383, 389, 401, 409, 421, 433, 443, 449, 463, 467, 491, 503, 509, 523, 547, 571, 577, 601, 619, 643, 647
Вот OEIS для слабых простых чисел (должен вернуться weak
) OEIS A051635
Вот OEIS для сбалансированных простых чисел (должен вернуться not weak
) OEIS A006562
Вот OEIS для сильных простых чисел (должен вернуться not weak
) OEIS A051634
источник
not weak
илиstrong
?Ответы:
Желе , 7 байт
Попробуйте онлайн!
объяснение
В качестве бонуса, изменения
>
в=
или<
проверки сбалансированных и сильных простых чисел, соответственно.источник
>
, нет?Mathematica, 24 байта
NextPrime
Встроенный могут быть (абы?) Используются для вычисления предыдущего премьера, подавая ему отрицательный аргумент.источник
Желе , 9 байт
Возвращает
1
для слабых и0
для не слабых или сбалансированных (возвращает1
для входа2
)Попробуйте онлайн!
Как?
источник
IIṠ⁼1
доII>0
кI<\
) ... твое сильно отличается , хотя. Кажется, вы думаете по-другому, чем я ... РЕДАКТИРОВАТЬ: Pietu1998 вернулся!PHP , 69 байт
печатает один для слабого простого числа и ничего для неслабого простого числа
Попробуйте онлайн!
источник
Октава,
9384 байтаСпасибо @LuisMendo и @ rahnema1 за сохранение байтов!
Попробуйте онлайн!
источник
i-=1
т.д.? Кроме того,end
не требуется в функции; Вы можете переместить его в нижний колонтитулМаксима, 42 байта
Попробуйте онлайн!
источник
MATL , 13 байт
Это выводит,
1
если слабый, в0
противном случае.Попробуйте онлайн!
объяснение
источник
GNU APL 1.2, 78 байт
∇f N
объявляет функцию, которая принимает аргумент.(~R∊R∘.×R)/R←1↓⍳N×2
дает список всех простых чисел от 2 до двойного аргумента. Я предполагаю, что следующий штрих меньше чем в два раза оригинал. Если это не так, тоN*2
дает N в квадрате и берет такое же количество байтов (надеюсь, этого будет достаточно, чтобы превзойти следующее простое число). (См. Объяснение Википедии о том, как работает поиск первоисточника)X←(R←(...))⍳N
присваивает этот список векторуR
(перезаписывая его предыдущее содержимое), находит индекс исходного простого числаN
в этом списке и затем присваивает этот индексX
.|R[X-1]-N
вычисляет разницу между предыдущим простым числом (посколькуR
содержит простые числа,X-1
элемент th является простым передN
) иN
а затем принимает абсолютное значение (APL работает справа налево).|R[X+1]-N
делает то же самое, но для следующего премьер.(|R[X-1]-N)<|R[X+1]-N
печатает 1, если предыдущее простое число ближе к оригиналу, чем следующее простое, и 0 в противном случае. Круглые скобки необходимы для приоритета.∇
заканчивает функциюисточник
Желе , 9 байт
Попробуйте онлайн!
источник
Pyth, 15 байт
Попробуй это здесь.
Использует алгоритм Pietu1998.
источник
Perl 6 , 41 байт
Попробуйте онлайн!
$_
это аргумент функции. Функция отображения-> \n { $_ + n, * + n ... &is-prime }
принимает числоn
и возвращает последовательность чисел,$_ + n, $_ + 2*n, ...
которая заканчивается, когда она достигает простого числа. Отображение этой функции на два числа1
и-1
производит последовательность из двух последовательностей; первое начинается с$_ + 1
и заканчивается первым простым числом больше чем$_
, а второе начинается$_ - 1
и заканчивается первым простым числом меньше чем$_
.[>]
уменьшает этот двухэлементный список с оператором «больше чем», возвращая значение «истина», если первая последовательность больше (то есть длиннее), чем вторая.источник
Python 2,7 - 120 байт
Поскольку в python нет встроенной простой функции, мы можем использовать теорему Вильсона, чтобы получить хорошую короткую простую проверку. Теорема Уилсона утверждает, что число является простым тогда и только тогда, когда (n-1)! является конгруэнтным -1 мод (n). Следовательно, функция i вернет 1, если число простое, и 0, если это не так. После этого функция f определит, будет ли следующий штрих из этого числа первым при увеличении, а не при увеличении. Если ни одно из приращенных чисел не является простым, оно просто рекурсивно вызывается снова.
Некоторые примеры ввода / вывода
источник
Python 2 ,
1221081039492 байтаПопробуйте онлайн!
Использует идею Пиету ... и затем сэкономил 28 байтов, играя в гольф более короткими итераторами основного списка; затем еще 2 замены
-3*n>0
с>3*n
(d'ах!)источник
Regex (большинство ароматов), 47 байт
Попробуйте онлайн!
Принимает участие в одинарных. Выводит совпадение для слабых простых чисел, но не для неслабых простых. Работает в ECMAScript, Perl, PCRE, Python, Ruby.
Объяснение:
Пусть N будет входным параметром, A - ближайшим простым числом <N, а B - ближайшим простым числом> N. Основная трудность подхода регулярных выражений к этой задаче состоит в том, что мы не можем представить числа, большие чем входные, как B. Вместо этого найти наименьшее b такое, что 2b + 1 простое и 2b + 1> N, что обеспечивает 2b + 1 = B.
Затем обратите внимание, что нам на самом деле не нужно находить A. Пока любое простое число <N ближе к N, чем B, N - слабое простое число.
источник
Октава, 53 байта
Попробуйте онлайн!
источник
JavaScript ES6,
162154 байта8 байтов сохраняются на основе трюка Йорга Хюльсермана «ничего не печатать в одном случае». Нет необходимости
?"Y":"N"
послеone<two
источник
05AB1E , 17 байт
Попробуйте онлайн!
Использует алгоритм Pietu1998.
источник
Python 3 , 149 байт
Попробуйте онлайн!
Я использую простую производящую функцию (верхнюю строку), взятую из этого старого ответа на обмен стека.
источник
JavaScript, 98 байт
Менее Голфед
Обратите внимание, что тестовый код не проверяет, что вход «простое» на самом деле является простым.
источник
braingasm ,
2322 байтаПечать
1
для слабых простых чисел и0
для не слабых.Прохождение:
источник
Юлия 0,6, 64 байта
источник
Python 2 , 81 байт
Попробуйте онлайн!
Использует теорему Вильсона для теста простоты.
источник