Für eine positive ganze Zahl n
mit der Primfaktorisierung, n = p1^e1 * p2^e2 * ... pk^ek
bei der p1,...,pk
es sich um Primzahlen und e1,...,ek
positive ganze Zahlen handelt, können zwei Funktionen definiert werden:
Ω(n) = e1+e2+...+ek
die Anzahl der Primteiler (gezählt mit der Multiplizität) ( A001222 )ω(n) = k
die Anzahl der unterschiedlichen Primteiler. ( A001221 )
Mit diesen beiden Funktionen definieren wir den Überschuss e(n) = Ω(n) - ω(n)
( A046660 ). Dies kann als Maß dafür angesehen werden, wie nahe eine Zahl an der Quadratfreiheit ist.
Herausforderung
Für eine gegebene positive Ganzzahl wird n
zurückgegeben e(n)
.
Beispiele
Denn n = 12 = 2^2 * 3
wir haben Ω(12) = 2+1
und ω(12) = 2
und deshalb e(12) = Ω(12) - ω(12) = 1
. Für jede quadratische Zahl haben n
wir offensichtlich e(n) = 0
. Die ersten Begriffe sind
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
code-golf
sequence
number-theory
primes
fehlerhaft
quelle
quelle
^
Macht istAntworten:
MATL ,
75 BytesProbieren Sie es online! Oder überprüfen Sie alle Testfälle .
Erläuterung
quelle
factor
in MATL funktioniert, wirklich cool =)YF
(in der 7-Byte-Version des Codes) oderYf
(5-Byte)? Letzteres ist wie in MATLABBrachylog , 11 Bytes
Probieren Sie es online!
Erläuterung
quelle
Mathematica, 23 Bytes
Sehr langweilig.
FactorInteger
nimmt bereits 13 Bytes ein und ich kann nicht viel sehen, das mit den restlichen 10 getan werden kann.quelle
Gelee , 5 Bytes
Probieren Sie es online!
Überprüfen Sie alle Testfälle.
Port von Luis Mendos Antwort in MATL .
quelle
ÆF’SṪ
hätte es meiner Meinung nach¬
verwirrt mich. Ich wusste nicht, dass es vektorisiert05AB1E , 6 Bytes
Erläuterung
Probieren Sie es online!
quelle
J,
1110 BytesDank Jonah 1 Byte gespeichert .
quelle
1#.1-~:@q:
für 10 Bytes. nette idee mit~:
btw.Pyth, 7 Bytes
Probieren Sie es online aus.
quelle
C 74 Bytes
Ideone es!
quelle
Python 2,
5756 BytesVielen Dank an @JonathanAllan für das Abschlagen von 1 Byte!
Teste es auf Ideone .
quelle
n/k%k<1
Haskell, 65 Bytes
quelle
05AB1E , 4 Bytes
Port der MATL -Antwort von @LuisMendo .
Probieren Sie es online aus oder überprüfen Sie die ersten 15 Testfälle .
Erläuterung:
quelle
Python 2,
100999896 BytesDer größte Teil des Codes wird von einer Golf-Version dieser SO-Antwort aufgenommen , in der die Primfaktoren der Eingabe gespeichert sind
f
. Dann verwenden wir einfach die Mengenmanipulation, um die überschüssigen Faktoren zu berechnen.Vielen Dank an Leaky Nun für das Speichern von
1 bis3 Bytes!quelle
Brachylog , 11 Bytes
Probieren Sie es online!
Überprüfen Sie alle Testfälle. (Der Wrapper ist länger als die Funktion ...)
quelle
SILOS , 113 Bytes
Probieren Sie es online!
Ein Port meine Antwort in C .
quelle
Javascript (ES6),
535146 Bytes5 Bytes gespart dank Neil
Beispiel:
quelle
r
rekursiv:f=(n,i=2)=>i<n?n%i?f(n,i+1):f(n/=i,i)+!(n%i):0
.Bash, 77 Bytes
Komplettes Programm mit Ein-
$1
und Ausgabe auf stdout.Wir
IFS
beginnen mit einem Zeilenumbruch, damit die Erweiterung durch"${f[*]}"
Zeilenumbrüche getrennt wird. Wir verwenden die arithmetische Substitution, um die Differenz zwischen der Anzahl der Wörter in der Faktorisierung und dem Ergebnis des Durchfilterns auszudruckenuniq
. Die Zahl selbst wird als Präfix von gedrucktfactor
, ist aber auch nach dem Filtern vorhanden, fällt also bei der Subtraktion heraus.quelle
Python (mit Sympy) 66 Bytes
sympy.factorint
Gibt ein Wörterbuch mit Faktoren als Schlüssel und ihren Multiplizitäten als Werten zurück, also ist die Summe der WerteΩ(n)
und die Anzahl der Werteω(n)
, also ist die Summe der dekrementierten Werte das, was wir wollen.quelle
CJam, 11 Bytes
Probieren Sie es online!
Erläuterung
quelle
C 158
Am Anfang gibt es die goto-Anweisung ... auch wenn diese länger ist als Ihre, ist sie lesbarer und korrekter [wenn ich sie nicht für zu groß halte ...]. Eine Sprache mit 10000 Bibliotheksfunktionen ist wrost als eine Sprache dass mit wenigen, 20 oder 30 Bibliotheksfunktionen alles besser geht [weil wir uns nicht alle diese Funktionen merken können]
quelle
GNU sed + coreutils, 55 Bytes
(einschließlich +1 für
-r
Flagge)Eingabe in dezimaler Schreibweise auf stdin; Ausgabe in unary, on stdout.
Erläuterung
quelle
APL (NARS) 35 Zeichen, 70 Byte
die Funktion π findet die Faktorisierung in der Primzahl ihres Arguments; Es gibt nur wenige zu sagen, dass es klar erscheint, aber für mich werden mehr Operationen (aus der Faktorisierung) als das Minimum ausgeführt ... Der Bereich der Anzahl der Zeichen liegt außerhalb der Golfsprachen, weil es zu viel zu zählen scheint, aber weniger als keine Golfsprachen ... Prüfung:
quelle