Sie haben den Tag mit Ihrem Prim-Sequence-Code gerettet , und der Mathematiklehrer war begeistert. So sehr, dass der Bibliothekar (a / k / a, Ihr Chef) vor eine neue Herausforderung gestellt wurde. Herzlichen Glückwunsch, Sie können die Lösung codieren, damit der Bibliothekar den Mathematiklehrer erneut beeindrucken kann.
Beginnen Sie mit der Folge natürlicher Zahlen in Basis 10, N
0, 1, 2, 3, 4, 5, 6 ...
Ohne 0
und 1
ist jede Zahl in dieser Folge entweder eine Primzahl, P
2, 3, 5, 7, 11, 13 ...
oder zusammengesetzt, C
4, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20 ...
Der Mathematiklehrer dachte darüber nach, wie der Bibliothekar dachte, eine Ganzzahl in die Dezimalerweiterung einer Zahl aus P einzufügen , und erstellte stattdessen eine Funktion G (x, y) , die eine Zahl x
aus N mit 1 <= x <= 9
und eine Zahl y
aus C nimmt und x
in die einfügt Dezimalerweiterung y
in jeder Position, von links nach rechts, wobei nur eindeutige Zahlen ausgewählt werden.
Zum Beispiel G (3,14) ist 314, 134, 143
. Allerdings G (1.14) ist nur 114, 141
als ob Sie voranstellen oder Einsatz der 1
in 14
die gleiche Anzahl 114
erzeugt.
Der Mathematiklehrer fragte sich, wie oft Sie diese Permutationen durchführen müssten, bevor Sie eine Zahl in P erhalten , wenn Sie x
in aufsteigender Reihenfolge vorgehen. Der Mathematiklehrer nannte dies den Composite-Prime-Index einer Zahl und schrieb ihn als CPI (y) .
Zum Beispiel 4
muss nur zweimal getan werden: 14, 41
Da 41
Primzahl ist, so CPI (4) ist 2
. Allerdings 8
muss 6 mal durchgeführt werden, 18, 81, 28, 82, 38, 83
vor dem Erreichen 83
als Primzahl, so CPI (8) ist 6
.
Ihre Aufgabe ist es, Code zu schreiben, der diesen Composite-Prime-Index mit einer eingegebenen Nummer ausgibt .
Eingang
- Eine einzelne Ganzzahl
y
, z. B.y
in C , die über das Funktionsargument STDIN oder ein Äquivalent eingegeben wird. - Für die Zwecke der Berechnung können Sie davon ausgehen
y
, dass sie in die üblichen ganzzahligen Bereiche passen (z. B. 2 31 -1 als Obergrenze annehmen ). - Verhalten für
y
nicht in C ist undefiniert.
Ausgabe
Der sich ergebende Composite-Prime-Index , der wie oben beschrieben berechnet wurde, wird mit zwei Ausnahmen an STDOUT oder einen gleichwertigen Index ausgegeben:
- Wenn die allerletzte Permutation (dh das Anhängen
9
any
) diejenige ist, die zu einer Primzahl führt, wird ausgegeben-1
. Ein Beispiel, das unten erweitert wird, isty=14
. - Wenn es keine Permutation gibt (dh G (x, y) ist eine Teilmenge von C für alle
1 <= x <= 9
), wird ausgegeben0
. Ein Beispiel, das unten erweitert wird, isty=20
.
Beispiele
y -> operations : output
4 -> 14, 41 : 2
6 -> 16, 61 : 2
8 -> 18, 81, 28, 82, 38, 83 : 6
9 -> 19 : 1
10 -> 110, 101 : 2
12 -> 112, 121, 212, 122, 312, 132, 123, 412, 142, 124, 512, 152, 125, 612, 162, 126, 712, 172, 127 : 19
14 -> 114, 141, 214, 124, 142, 314, 134, 143, 414, 144, 514, 154, 145, 614, 164, 146, 714, 174, 147, 814, 184, 148, 914, 194, 149 : -1
15 -> 115, 151 : 2
16 -> 116, 161, 216, 126, 162, 316, 136, 163 : 8
18 -> 118, 181 : 2
20 -> 120, 210, 201, 220, 202, 320, 230, 203, 420, 240, 204, 520, 250, 205, 620, 260, 206, 720, 270, 207, 820, 280, 208, 920, 290, 209 : 0
Beschränkungen
- Dies ist Codegolf, da Sie dies auf eine Karteikarte übertragen müssen, damit der Bibliothekar dem Mathematiklehrer zeigen kann, und Ihre Hand verkrampft sich leicht.
- Es gelten die üblichen Lückenbeschränkungen. Der Bibliothekar toleriert keine Betrüger.
19
Primzahl, sollte die Ausgabe also nicht 1 sein?