Для положительного целого числа n
с простой факторизацией, n = p1^e1 * p2^e2 * ... pk^ek
где p1,...,pk
простые числа и e1,...,ek
положительные целые, мы можем определить две функции:
Ω(n) = e1+e2+...+ek
количество простых делителей (посчитано с кратностью) ( A001222 )ω(n) = k
число различных простых делителей. ( A001221 )
С помощью этих двух функций мы определяем избыток e(n) = Ω(n) - ω(n)
( A046660 ). Это можно рассматривать как меру того, насколько близко число к квадрату.
Вызов
Для заданного положительного целого числа n
верните e(n)
.
Примеры
Для n = 12 = 2^2 * 3
нас есть Ω(12) = 2+1
и ω(12) = 2
поэтому e(12) = Ω(12) - ω(12) = 1
. Для любого квадратичного числа n
мы, безусловно, имеем e(n) = 0
. Первые несколько терминов
1 0
2 0
3 0
4 1
5 0
6 0
7 0
8 2
9 1
10 0
11 0
12 1
13 0
14 0
15 0
^
это властьОтветы:
MATL ,
75 байтПопробуйте онлайн! Или проверьте все тестовые случаи .
объяснение
источник
factor
работает в MATL, действительно круто =)YF
(в 7-байтовой версии кода) илиYf
(5-байтовой)? Последний как в MATLABБрахилог , 11 байт
Попробуйте онлайн!
объяснение
источник
Mathematica, 23 байта
Очень скучно.
FactorInteger
уже занимает 13 байт, и я не вижу много, что можно сделать с оставшимися 10.источник
Желе , 5 байт
Попробуйте онлайн!
Проверьте все тестовые случаи.
Порт Луис Мендо ответ в MATL .
источник
ÆF’SṪ
бы сработал¬
меня смутило. Я не знал, что это векторизация05AB1E , 6 байтов
объяснение
Попробуйте онлайн!
источник
J
1110 байтСохранено 1 байт благодаря Ионе .
источник
1#.1-~:@q:
для 10 байтов. хорошая идея, используя~:
кстати.Pyth, 7 байт
Попробуйте онлайн.
источник
C 74 байта
Идео это!
источник
Python 2,
5756 байтСпасибо @JonathanAllan за отыгрывание 1 байта!
Проверьте это на Ideone .
источник
n/k%k<1
Haskell, 65 байт
источник
05AB1E , 4 байта
Порт ответа @LuisMendo на MATL .
Попробуйте онлайн или проверьте первые 15 контрольных примеров .
Объяснение:
источник
Python 2,
100999896 байтБольшая часть кода занята гольф-версией этого SO-ответа , в котором хранятся основные факторы входных данных
f
. Затем мы просто используем набор манипуляций для расчета избыточных факторов.Спасибо Leaky Nun за спасение
13 байтов!источник
Brachylog , 11 байт
Попробуйте онлайн!
Проверьте все тестовые случаи. (Оболочка длиннее функции ...)
источник
СИЛОС , 113 байт
Попробуйте онлайн!
Порт моего ответа в Си .
источник
Javascript (ES6),
535146 байтСохранено 5 байтов благодаря Нейлу
Пример:
источник
r
рекурсивно:f=(n,i=2)=>i<n?n%i?f(n,i+1):f(n/=i,i)+!(n%i):0
.Баш, 77 байт
Полная программа, с вводом в
$1
и выводом на стандартный вывод.Мы
IFS
начинаем с новой строки, чтобы расширение было"${f[*]}"
разделено новой строкой. Мы используем арифметическую подстановку, чтобы вывести разницу между количеством слов в разложении и результатом фильтрацииuniq
. Само число печатается как префиксfactor
, но оно также присутствует после фильтрации, поэтому вычитается в вычитании.источник
Python, (с симпатией) 66 байт
sympy.factorint
возвращает словарь с факторами в качестве ключей и их кратностями в качестве значений, поэтому сумма значений равна,Ω(n)
а количество значений равноω(n)
, поэтому сумма уменьшенных значений - это то, что нам нужно.источник
CJam, 11 байт
Попробуйте онлайн!
объяснение
источник
С, 158
В начале есть инструкция goto ... даже если она длиннее вашей, она более читабельна и правильна [если я не считаю слишком большой ...] один язык, имеющий 10000 библиотечных функций, хуже, чем язык что с несколькими, 20 или 30 библиотечными функциями можно сделать все лучше [потому что мы не можем запомнить все эти функции]
источник
GNU sed + coreutils, 55 байт
(включая +1 за
-r
флаг)Ввод в десятичном виде, по стандартному вводу; вывод в одинарный, на стандартный вывод.
объяснение
источник
APL (NARS) 35 символов, 70 байтов
функция π находит факторизацию в простом аргументе; мало кто скажет, что это кажется ясным, но для меня больше операций (от факторизации), чем от минимума ... диапазон количества символов отсутствует для языков игры в гольф, потому что кажется, что это слишком много, но меньше, чем для языков игры в гольф ... тестовое задание:
источник