Herausforderung
Bei einer positiven Ganzzahl geben Sie das Produkt seiner Teiler einschließlich sich selbst zurück.
Dies ist die Sequenz A007955 im OEIS .
Testfälle
1: 1 2: 2 3: 3 4: 8 5: 5 6: 36 7: 7 8: 64 9: 27 10: 100 12: 1728 14: 196 24: 331776 25: 125 28: 21952 30: 810000
Wertung
Das ist Code-Golf , also gewinnt die kürzeste Antwort in jeder Sprache!
Antworten:
05AB1E , 2 Bytes
Probieren Sie es online!
Erläuterung
quelle
Japt , 3 Bytes
Probieren Sie es online!
Erläuterung
quelle
â
und×
als ich diese Antwort schriebGelee , 3 Bytes
Probieren Sie es online!
quelle
MATL , 3 Bytes
Probieren Sie es online!
quelle
Python 3 ,
4241 Bytes1 Byte dank Leaky Nun gespeichert!
Probieren Sie es online!
quelle
(1,k)[i%k<1]
entsprichtk**(i%k<1)
Haskell ,
3534 Bytes-1 danke an ovs
Probieren Sie es online!
quelle
Pyth , 6 Bytes
Testsuite .
quelle
Alice , 12 Bytes
Probieren Sie es online!
Erläuterung
Dies ist nur das reguläre Framework für dezimale E / A:
Dann ist das Programm:
quelle
Neim , 2 Bytes
Probieren Sie es online!
quelle
R , 28 Bytes
Probieren Sie es online!
quelle
x86-64-Maschinencode, 26 Byte
Der obige Code definiert eine Funktion, die einen einzelnen Parameter (den Eingabewert, eine positive Ganzzahl) in
EDI
( gemäß der unter Gnu / Unix verwendeten AMD64-Aufrufkonvention von System V ) und ein einzelnes Ergebnis (das Produkt von Divisoren) in zurückgibtEAX
.Intern berechnet es das Produkt von Divisoren mit einem (äußerst ineffizienten) iterativen Algorithmus, ähnlich wie der C-Submission pizzapants184 . Grundsätzlich verwendet es einen Zähler, um alle Werte zwischen 1 und dem Eingabewert zu durchlaufen und zu prüfen, ob der aktuelle Zählerwert ein Teiler der Eingabe ist. Wenn ja, multipliziert es dies mit dem laufenden Gesamtprodukt.
Ungolfed Assembler-Mnemonik:
Die Tatsache, dass der
IDIV
Befehl hartcodierte Operanden für die Dividende verwendet, verkrampft meinen Stil ein wenig, aber ich denke, das ist ziemlich gut für eine Sprache, die keine eingebauten, sondern einfache arithmetische und bedingte Verzweigungen hat!quelle
TI-Basic (TI-84 Plus CE), 24 Byte
Vollständiges Programm: Fordert den Benutzer zur Eingabe auf. gibt die Ausgabe in
Ans
a zurück speziellen Variablen zurück , die (im Grunde) den Wert des zuletzt berechneten Werts speichert.Erläuterung:
quelle
C (gcc),
5248 Bytes-4 Bytes dank Cody Gray
Eine Funktion, die eine Ganzzahl aufnimmt und das Produkt ihrer Teiler zurückgibt.
Probieren Sie es online!
Ungolfed:
quelle
p*=
Ausdruck entfernen und (3) eine Anweisung in den Text derfor
Schleife einfügen, um ein Komma zu löschen. Ich verwende auch gerne globale Variablen, anstatt zusätzliche Parameter hinzuzufügen. Dies vermeidet undefiniertes Verhalten, ohne Byte zu kosten. Endgültige Fassung:p,a;f(x){for(p=1,a=x;a;--a)p*=x%a?1:a;return p;}
return p;
mitp=p;
und speichern fünf Bytes.p,a;f(x)
mitf(x,p,a)
.return p;
und nicht fünf, sondern neun Bytes einsparen. ( TIO )JavaScript (ES7), 32 Byte
Sie haben ein paar Bytes gespart, indem Sie sich Leakys Tipp für die Python-Lösung von musicman geliehen haben .
Versuch es
Alternative (ES6), 32 Byte
quelle
(n%i?1:i)
? (Dies würde jedoch kein Byte speichern.)TI-Basic,
241413 Bytes1 Byte dank Lirtosiast gespeichert
quelle
int(
?QBIC , 22 Bytes
Erläuterung
quelle
Pari / GP , 18 Bytes
Probieren Sie es online!
quelle
PHP , 45 Bytes
Probieren Sie es online!
quelle
Mathematica, 17 Bytes
Für diejenigen, die keine gelöschten Antworten anzeigen können (die Antwort von DavidC), ist dies der Code in Mathematica mit Hilfe von @MartinEnder
quelle
Shakespeare-Programmiersprache , 353 Bytes
Ungolfed-Version:
Ich benutze diesen SPL-Compiler , um das Programm auszuführen.
Laufen mit:
quelle
Python 3, 45 Bytes
lambda _:_**(sum(_%-~i<1for i in range(_))/2)
Sei
x
eine Zahl. Beidey
undz
werden Teiler vonx
if seiny * z = x
. Dahery = x / z
. Sagen wir mal eine Nummerd
6 divisiors hat aufgrund dieser Beobachtung wird die Divisorena
,b
,c
,d / a
,d / b
,d / b
. Wenn wir alle diese Zahlen (den Punkt des Puzzles) multiplizieren, erhalten wird * d * d = d ^ 3
. Im Allgemeinen iste
bei einer Reihe vonf
Teilern das Produkt dieser Teiler dase ^ (f / 2)
, was das Lambda tut.Probieren Sie es online!
quelle
MEIN , 4 Bytes
Verhexen:
Erläuterung:
quelle
Java (OpenJDK 8) ,
5251 BytesProbieren Sie es online!
Danke LeakyNun für das Speichern von 1 Byte!
quelle
n->{int r=n,d=0;for(;++d<n;)r*=n%d<1?d:1;return r;}
RProgN 2 , 2 Bytes
Eine andere Sprache mit eingebauten Inhalten für
divisors
undproduct
.Probieren Sie es online!
quelle
Perl 6 , 22 Bytes
Probieren Sie es online!
quelle
J, 19 Bytes
Erklärung kommt später ...
Probieren Sie es online!
quelle
Oktave , 27 Bytes
Dies definiert eine anonyme Funktion.
Probieren Sie es online!
quelle
Python 2 ,
5250 Bytesm*=n%i>0 or i
Probieren Sie es online!
quelle
Fortran 95, 88 Bytes
Probieren Sie es online!
Ungolfed:
quelle
Axiom, 23 Bytes
Dies ist eine Übersetzung der Alephalpha-Lösung in Axiom
quelle