Semiperfekte Zahlen
Eine Semiperfekt- / Pseudoperfekt-Zahl ist eine ganze Zahl, die der Summe eines Teils oder aller ihrer Teiler (ohne sich selbst) entspricht. Zahlen, die gleich der Summe aller ihrer Teiler sind, sind perfekt.
Divisors of 6 : 1,2,3
6 = 1+2+3 -> semiperfect (perfect)
Divisors of 28 : 1,2,4,7,14
28 = 14+7+4+2+1 -> semiperfect (perfect)
Divisors of 40 : 1,2,4,5,8,10,20
40 = 1+4+5+10+20 or 2+8+10+20 -> semiperfect
Primitive
Eine primitive Semiperfektzahl ist eine Semiperfektzahl ohne semiperfekte Teiler (außer sich selbst :))
Divisors of 6 : 1,2,3
6 = 1+2+3 -> primitive
Divisors of 12 : 1,2,3,4,6
12 = 2+4+6 -> semiperfect
Verwenden Sie als Referenz die OEIS-Serie A006036 für primitive Semiperfekt-Zahlen und A005835 für Semiperfekte.
Tor
Schreiben Sie ein Programm oder eine Funktion in einer beliebigen Sprache. Als Eingabe wird eine Zahl n als Funktionsparameter oder von der nächstgelegenen Alternative von STDIN / Ihrer Sprache verwendet und es werden alle primitiven semi-perfekten Zahlen von 1 bis n (einschließlich) ausgegeben.
Die Ausgabe muss 6[separator]20[separator]28[separator]88...
so formatiert werden, dass [Trennzeichen] entweder als Zeilenumbruch, Leerzeichen oder Komma steht. Es darf weder ein Start- noch ein End-Trennzeichen geben.
Bearbeiten: Sie können einen abschließenden Zeilenumbruch hinterlassen
Beispiele
Eingabe:
5
Ausgabe :
Eingabe:
20
Ausgabe :
6
20
Eingabe:
100
Ausgabe :
6 20 28 88
Wertung
Das ist Code-Golf, also gewinnt der kürzeste Code in Bytes.
Versuchen Sie nicht, uns mit Lücken zu täuschen, bitte :).
Ich würde mich freuen, wenn Sie eine Erklärung Ihres Golf-Codes hinterlassen könnten, sobald Sie glauben, dass Sie damit fertig sind!
K
zuY
zu bauenY
, die an anderer Stelle gebraucht wird. Allerdings könnte ich den Druck auch separat machen, zB mitaYKK
statt miteaYK
. In beiden Fällen sind es jedoch 4 Bytes.Julia,
161149 BytesDadurch wird eine unbenannte Funktion erstellt, die eine Ganzzahl als Eingabe akzeptiert und die Zahlen durch einen Zeilenumbruch getrennt an STDOUT ausgibt. Um es zu nennen, geben Sie ihm einen Namen, z
f=n->...
.Ungolfed + Erklärung:
Beispiele:
quelle
JavaScript ( ES6 ) 172
Führen Sie das folgende Snippet aus, um es zu testen
quelle
CJam, 54 Bytes
Diese Lösung fühlt sich etwas umständlich an, aber da es nur wenige Antworten und keine in CJam gibt, dachte ich, ich würde es trotzdem posten:
Ein guter Teil des Zuwachses gegenüber der veröffentlichten Pyth-Lösung beruht auf der Tatsache, dass CJam meines Erachtens nicht über einen Operator verfügt, mit dem alle Teilmengen einer Menge aufgelistet werden können. Um dies mit den verfügbaren Operatoren abzuschließen, waren einige Arbeiten erforderlich. Natürlich, wenn es tatsächlich einen einfachen Operator gibt, den ich vermisst habe, werde ich irgendwie albern aussehen. :)
Erläuterung:
Probieren Sie es online aus
quelle
PHP, 263 Bytes
Probieren Sie es online!
Erweitert
quelle
Jelly , 22 Bytes
Probieren Sie es online!
Erläuterung
quelle