Удивительно, но я не думаю, что у нас есть вопрос по коду для определения, является ли число полупростым .
Полупростое число - это натуральное число, являющееся произведением двух (не обязательно различных) простых чисел.
Достаточно простая, но удивительно важная концепция.
Учитывая положительное целое число, определите, является ли оно полупростым. Ваш вывод может быть в любой форме, при условии, что он дает одинаковый вывод для любого истинного или ложного значения. Вы также можете предположить, что ваш ввод достаточно мал, чтобы производительность или переполнение не были проблемой.
Тестовые случаи:
input -> output
1 -> false
2 -> false
3 -> false
4 -> true
6 -> true
8 -> false
30 -> false (5 * 3 * 2), note it must be EXACTLY 2 (non-distinct) primes
49 -> true (7 * 7) still technically 2 primes
95 -> true
25195908475657893494027183240048398571429282126204032027777137836043662020707595556264018525880784406918290641249515082189298559149176184502808489120072844992687392807287776735971418347270261896375014971824691165077613379859095700097330459748808428401797429100642458691817195118746121515172654632282216869987549182422433637259085141865462043576798423387184774447920739934236584823824281198163815010674810451660377306056201619676256133844143603833904414952634432190114657544454178424020924616515723350778707749817125772467962926386356373289912154831438167899885040445364023527381951378636564391212010397122822120720357
-> true, and go call someone, you just cracked RSA-2048
Это код-гольф , поэтому применяются стандартные правила!
Ответы:
Брахилог , 2 байта
В основном это порт от ответа Фатализ на вызов Сфенического числа.
Попробуйте онлайн!
Как?
источник
Ċ
- это встроенный список двух переменных; Будучи декларативным языком, по умолчанию вывод является тестом на удовлетворение (например, самḋ
по себе будет выводитьtrue.
для неотрицательных целых чисел).c6 eb
.Шелуха , 4 байта
Смотри ма не Юникод!
Попробуйте онлайн!
Как?
источник
Mathematica, 16 байтов
PrimeOmega
подсчитывает количество простых факторов, считая кратность.источник
SemiprimeQ
PrimeOmega
Pyth , 4 байта
Тестовый пакет .
Как?
источник
Python 3 , 54 байта
Попробуйте онлайн!
В предыдущей версии были некоторые проблемы с округлением больших чисел куба (
125
и343
т. Д.).Это вычисляет количество делителей (не только простых чисел), если оно имеет
1
или2
возвращаетTrue
.Единственным исключением является случай, когда число имеет более двух простых факторов, но только два делителя. В этом случае это идеальный куб простого числа (его делителями являются его кубический корень и его кубический корень в квадрате).
x**3==n
будет охватывать этот случай, добавление одного к записи корня куба увеличивает сумму до 3 и останавливает ложноположительные значения. спасибо Джонатану Аллану за письмо с этим прекрасным объяснениемисточник
n**(1/3)%1>0<sum...
должно сработать.Рубин ,
5648 байтовПопробуйте онлайн!
Как это работает:
Спасибо Value Ink за идею, которая сэкономила 8 байтов.
источник
c
начать с 0 и не сосчитать, а не сделать массив массивом, к которому вы добавляете все факторы? Таким образом, выsize
Mathematica,
3129 байтисточник
Нейм , 4 байта
Попробуйте онлайн!
источник
𝐏
,𝐥
,δ
и в𝔼
виде отдельных байтов.Python 2 , 67 байт
Попробуйте онлайн!
-10 байт благодаря @JonathanAllan!
Кредит на алгоритм факторизации Prime идет Деннису (в первоначальной версии)
источник
JavaScript (ES6), 47 байт
Возвращает логическое значение.
демонстрация
Показать фрагмент кода
источник
Mathematica 32 байта
Благодаря ngenesis за 1 байт сохранено
источник
;;
вместоAll
.Желе , 5 байт
Попробуйте онлайн!
объяснение
источник
На самом деле , 4 байта
Попробуйте онлайн!
источник
05AB1E, 4 байта
Попробуйте онлайн!
Как?
источник
MATL, 5 байтов
Попробуйте онлайн!
объяснение
Yf
- Главные факторы.n
- длина2=
- равно 2?источник
Дьялог АПЛ, 18 байт
Попробуйте онлайн!
Как?
⎕CY'dfns'
- импортpco
3pco⎕
- запуститьpco
на входе с левым аргументом 3 (простые факторы)2=≢
- длина = 2?источник
Gaia , 4 байта
4 байта, кажется, общая длина, интересно, почему ...: P
Попробуйте онлайн!
объяснение
источник
Python с SymPy 1.1.1 ,
5744 байта-13 байт благодаря alephalpha (используйте 1.1.1
primeomega
)Попробуйте онлайн!
источник
lambda n:primeomega(n)==2
R , 67 байт
Попробуйте онлайн!
источник
Рубин , 35 + 8 = 43 байта
Использует
-rprime
флаг, чтобы разблокироватьprime_division
функцию.Попробуйте онлайн!
источник
Java 8,
6961 байт-8 байт благодаря @Nevay .
Попробуй это здесь.
источник
else++r;
), чтобы сохранить 8 байтовn->{int r=1,c=2;for(;r++<n;)for(;n%r<1;n/=r)c--;return c==0;}
.Python 2 ,
7565 байтПопробуйте онлайн!
Все заслуги перед ответом xnor за исходный основной код факторизации.
источник
C #, 112 байт
С применением форматирования:
И как тестовая программа:
Который имеет выход:
источник
Пари / ГП , 17 байт
Попробуйте онлайн!
источник
Сетчатка , 45 байт
Попробуйте онлайн! Ссылка включает в себя тестовые случаи. Объяснение:
Преобразовать в одинарный.
Попробуйте найти два фактора.
Убедитесь, что оба фактора просты.
Убедитесь, что были найдены два фактора.
источник
Python 2, 90 байт
f
принимает целое числоn
больше или равно1
, возвращает логическое значение.Попробуйте онлайн!
Тестовые случаи:
источник
J , 6 байт
5 байтов будут работать как разовые:
Я считаю, что мне нужно шесть, когда я определяю функцию:
источник
Пайк , 5 байт
Попробуй это здесь!
источник
Japt ,
65 байтПротестируйте это онлайн
объяснение
Делает то же самое, что и большинство других ответов:
k
получает массив простых факторов,Ê
получает его длину и¥
проверяет равенство с2
.источник
÷k o)j
также работает, к сожалению, он такой же длины :-(Perl 6 , 43 байта
Попробуйте онлайн!
f
наименьший коэффициент больше 1 входного аргумента$_
, илиNil
если$_
равен 1. Возвращаемое значение функции - true, еслиf
true (то есть, нетNil
) И входной аргумент, деленный на коэффициент, является простым.Если
$_
само число простое, то оноf
будет равно$_
и$_ / f
равно 1, что не является простым, поэтому формула работает и в этом случае.источник