Сфеническое число - это число, которое является произведением ровно трех различных простых чисел. Первые несколько сфенических чисел 30, 42, 66, 70, 78, 102, 105, 110, 114
. Это последовательность A007304 в OEIS.
Твое задание:
Напишите программу или функцию, чтобы определить, является ли введенное целое число сфеническим числом.
Входные данные:
Целое число от 0 до 10 ^ 9, которое может быть или не быть Sphenic Number.
Выход:
Истинное / ложное значение, указывающее, является ли ввод сфеническим числом.
Примеры:
30 -> true
121 -> false
231 -> true
154 -> true
4 -> false
402 -> true
79 -> false
0 -> false
60 -> false
64 -> false
8 -> false
210 -> false
Подсчет очков:
Это код-гольф , выигрывает самый короткий код в байтах.
code-golf
number
decision-problem
primes
Грифон - Восстановить Монику
источник
источник
60
клиновидный номер?2 × 2 × 3 × 5
60
это не сфеническое число. (в ожидании разъяснения ОП)Ответы:
Брахилог ,
63 байтаПопробуйте онлайн!
объяснение
источник
≠
.Ṫ
также.Ṫ
самом деле не является встроенным предикатом; это встроенная переменная: список из 3 переменных элементов. Это довольно полезная предварительно ограниченная переменная для множества различных задач.Баш, 43 байта
Попробуйте онлайн!
Ввод через аргумент командной строки, вывод
0
или1
в стандартный вывод.Довольно очевидный; анализирует выходные данные,
factor
чтобы убедиться, что первый и второй факторы различны, второй и третий различны (они расположены в отсортированном порядке, поэтому этого достаточно), и есть четыре поля (входное число и три фактора).источник
MATL , 7 байт
Попробуйте онлайн! Или проверьте все тестовые случаи .
объяснение
источник
X=
это самая грустная постройка, которую я когда-либо видел.C
8878126587773 + 4 (lm
) = 77 байтUngolfed прокомментировал объяснение:
Попробуйте онлайн!
источник
i*1.0/l
вместо броска, чтобы плавать. (А посколькуl
,j
являются глобальными , они инициализируются 0 бесплатно, вам не нужно делать, если функция вызывается только один раз не уверен , что это правило для этого..)CJam , 11 байт
Попробуйте онлайн! Или проверьте все тестовые случаи .
объяснение
На основании моего ответа MATL.
источник
Желе , 8 байт
Попробуйте онлайн!
Использует алгоритм Луиса Мендо.
Объяснение:
источник
Шелуха , 6 байт
Попробуйте онлайн!
Возвращает 1 для сфенических чисел и 0 в противном случае.
объяснение
В последнем отрывке конгруэнтность между двумя списками означает одинаковую длину и одинаковое распределение истинных / ложных значений. В этом случае мы проверяем, что наш результат состоит из двух истинных (то есть ненулевых) значений.
источник
Mathematica, 31 байт
источник
PrimeNu
сделаете так же, какPrimeOmega
и короче.Желе , 6 байт
Попробуйте онлайн!
Как это работает
источник
05AB1E ,
75 байтовПопробуйте онлайн!
Использует алгоритм Денниса.
источник
На самом деле 7 байтов
Попробуйте онлайн!
Объяснение:
источник
Haskell , 59 байт
Попробуйте онлайн!
источник
J 15 байт
Попробуйте онлайн!
объяснение
источник
Дьялог АПЛ, 26 байт
Попробуйте онлайн!
источник
Рубин,
814946 байтовВключает 6 байтов для параметров командной строки
-rprime
.Попробуйте онлайн!
источник
Python 3 ,
5453 байтаСпасибо @xnor за вывод 1 байта!
Попробуйте онлайн!
источник
k*k%n
а не сn%k**2
C,
91102 байта, исправлено (снова), проверено и проверено на настоящее время:/ * Это также работает в 93 байтах, но так как я забыл о стандартных правилах, запрещающих тип int по умолчанию для динамических переменных, и о запрете неявных возвращаемых значений без присваиваний, я не собираюсь его принимать:
(Кто сказал, что я что-то знал о C? ;-)
Вот тестовый фрейм со сценарием оболочки в комментариях:
Я позаимствовал предыдущий ответ Betseg, чтобы добраться до моей версии.
Это моя версия алгоритма Betseg, которую я решил найти в своем решении:
источник
[betseg's answer](https://codegolf.stackexchange.com/a/135203/65836)
. Вы также можете нажать кнопку «Изменить» на его ответе, чтобы предложить изменить его, если хотите, который будет включать объяснение - без каких-либо обещаний относительно того, будет ли оно одобрено или нет.Pyth, 9 байт
Попробуй это здесь.
источник
Javascript (ES6), 87 байт
Пример кода:
источник
Python 2 ,
135121 байтПопробуйте онлайн!
источник
Python 2 , 59 байт
Попробуйте онлайн!
источник
J, 23 байта
Попробуйте онлайн!
Обработка 8 и 0 в основном разрушила этот ...
q:
дает вам все основные факторы, но не обрабатывает 0. остальное просто говорит, что «уникальные факторы должны равняться факторам» и «их число должно быть 3»источник
60
8
.(6=]#@,~.)@q:
как возможное решениеJapt , 14 байт
Попробуйте онлайн!
источник
Number.k()
, которая не будет иметь никакого эффекта, и просто проверит, имеет ли вход 3 простых фактора, а не 3 различных простых фактора. Это означало бы8
(с тремя основными факторами :),2, 2, 2
несмотря на отсутствие A0073048
к тестам по этой причине.Mathematica, 44 байта
Попробуйте онлайн!
источник
VB.NET (.NET 4.5), 104 байта
Я использую функцию VB, где имя функции также является переменной. В конце выполнения, поскольку нет оператора return, вместо этого он передаст значение функции.
Последнее
A=A=3
можно представитьreturn (A == 3)
на языках Си.Начинается с 2 и итеративно выводит простые числа. Поскольку я начинаю с наименьших простых чисел, его нельзя разделить на составное число.
Попробую во второй раз разделить на одно и то же простое число. Если это так (например, как 60 делится дважды на 2), будет установлено количество простых чисел равным 4 (выше максимально допустимого для целого числа).
Попробуйте онлайн!
источник
Dyalog APL,
514948464543 байтаПопробуйте онлайн! (изменено, чтобы он мог работать на TryAPL)
Я хотел представить тот, который не зависит от пространства имен dfns, даже если он длинный .
источник
J,
151419 байтПредыдущая попытка:
3&(=#@~.@q:)~*
Текущая версия:
(*/*3=#)@~:@q: ::0:
Как это работает:
Это относится к случаям 0, 8 и 60, которых не было в предыдущей версии.
источник
Mathematica,
6657 байтОпределяет анонимную функцию.
является транспонирование .объяснение
FactorInteger
дает список пар факторов и их показателей. НапримерFactorInteger[2250]=={{2,1},{3,2},{5,3}}
. Это транспонировано для простоты использования и подается в функциюLength@#1==3&&And@@EqualTo[1]/@#2&
. Первая частьLength@#1==3
проверяет наличие 3 уникальных факторов, а втораяAnd@@EqualTo[1]/@#2
проверяет, что все показатели равны 1.источник
PHP, 66 байт:
Беги как труба с
-nR
или попробуйте онлайн .Бесконечный цикл для
0
; вставить$n&&
перед--$n
исправить.сломать
пример
аргумента =
30
:простые факторы
2
,3
а5
другие делители:
1
2 * 3 =6
, 2 * 5 =10
и 3 * 5 =15
их произведение:
1*2*3*5*6*10*15
is27000
==30**3
источник
Python 99 байт
Первая подача. Прости меня, если я сделал что-то не так. В некотором роде глупо, считает количество факторов
n
, а затем количество разn
делится на каждого (добавляя 10 ** 9).Я уверен, что есть несколько простых способов обрезать ~ 10-20 символов, но я этого не сделал.
Также это невероятно медленно на 10 ** 9. Можно сделать все
'...a+=1\n'*n
правильно'...a+=1\n'*n**.5
, изменив на , так как нам нужно только перейти к квадратному корню изn
.источник