Primzahlen und Ziffern


11

Dies hat keinen praktischen Zweck, aber es könnte Spaß machen, Golf zu spielen.

Herausforderung

Bei einer gegebenen Zahl n ,

  1. Zählen Sie die Menge jeder Ziffer in n und addieren Sie 1 zu jeder Zählung
  2. Nehmen Sie die Primfaktorisierung von n
  3. Zählen Sie die Menge jeder Ziffer in der Primfaktorisierung von n , ohne doppelte Primzahlen einzuschließen
  4. Erstellen Sie eine neue Liste, indem Sie die jeweiligen Elemente der Listen aus den Schritten 1 und 3 miteinander multiplizieren
  5. Geben Sie die Summe dieser Liste zurück

Zum Beispiel hat 121 zwei 1s und a 2, so dass Sie die folgende Liste aus Schritt 1 erhalten würden:

0 1 2 3 4 5 6 7 8 9
1 3 2 1 1 1 1 1 1 1

Die Primfaktorisierung von 121 ist 11 2 , was die folgende Liste für Schritt 3 ergibt:

0 1 2 3 4 5 6 7 8 9
0 2 0 0 0 0 0 0 0 0

Beachten Sie, dass wir den Exponenten nicht gezählt haben. Diese multiplizieren sich, um Folgendes zu erhalten:

0 1 2 3 4 5 6 7 8 9
0 6 0 0 0 0 0 0 0 0

Und die Summe dieser Liste ist 6.

Testfälle

1 -> 0
2 -> 2
3 -> 2
4 -> 1
5 -> 2
10 -> 2
13 -> 4
121 -> 6

Anmerkungen

  • Standardlücken sind verboten.
  • Eingabe und Ausgabe können in jedem vernünftigen Format erfolgen.
  • Sie sollten Einsen (oder Nullen für Schritt 3) in der Liste für Ziffern belassen, die nicht in der Nummer enthalten sind.
  • Dies ist , also gewinnt die kürzeste Lösung in Bytes.

Ergibt 667 (= 23 * 29) in Schritt 3 zwei 2en, eine 3 und eine 9?
Jonathan Allan

@ JonathanAllan Ja.
RamenChef

2
@ wizzwizz4 232792560-> [2,1,4,2,1,2,2,2,1,2](Schritt 1); 2*2*2*2*3*3*5*7*14*17*19(Schritt 2); so [0,5,1,2,0,1,0,2,0,1](Schritt 3); dann [0,5,4,4,0,2,0,4,0,2](Schritt 4); und sollte daher ausgeben 21.
Jonathan Allan

@ JonathanAllan Es wäre schön, wenn ich zählen könnte. : - /
wizzwizz4

Antworten:


2

Gelee , 16 Bytes

ṾċЀØD
ÆfQÇ×Ç‘$S

Probieren Sie es online aus!

Entwickelt unabhängig von und nicht genau gleich der anderen Jelly-Lösung .

Erläuterung

Ich bin Gong 242als Beispiel Eingabe zu verwenden.

ṾċЀØD     Helper link
Ṿ          Uneval. In this case, turns it's argument into a string. 
           242Ṿ → ['2','4','2']. [2,11] → ['2', ',', '1', '1']. The ',' won't end up doing anything.
    ØD     Digits: ['0','1',...,'9']
 ċЀ       Count the occurrence of €ach digit in the result of Ṿ

ÆfQÇ×Ç‘$S  Main link. Argument 242
Æf         Prime factors that multiply to 242 → [2,11,11]
  Q        Unique elements → [2,11]
   Ç       Apply helper link to this list → [0,2,1,0,0,0,0,0,0,0]
     Ç‘$   Apply helper link to 242 then add 1 to each element → [1,1,3,1,2,1,1,1,1,1]
    ×      Multiply the two lists element-wise → [0,2,3,0,0,0,0,0,0,0]
        S  Sum of the product → 5

4

Gelee ,  18  17 Bytes

-1 Byte dank Caird Coinheringaahing & H.PWiz (vermeiden Sie die Paarung der beiden Vektoren)

DF‘ċЀ⁵
ÆfQÇæ.Ç‘$

Eine monadische Verknüpfung, die eine positive Ganzzahl nimmt und eine nicht negative Ganzzahl zurückgibt.

Probieren Sie es online aus!

Wie?

DF‘ċЀ⁵ - Link 1, digitalCount: number(s)    e.g. [13,17]
D       - to decimal list (vectorises)            [[1,3],[1,7]]
 F      - flatten                                 [1,3,1,7]
  ‘     - increment (vectorises)                  [2,4,2,8]
      ⁵ - literal ten                             10
    Ѐ  - map across              (implicit range [1,2,3,4,5,6,7,8,9,10])
   ċ    - count                                   [0,2,0,1,0,0,0,1,0,0]

ÆfQÇæ.Ç‘$ - Main link: positive integer, n   e.g. 11999
        $ - last two links as a monad:
      Ç   -   call the last link (1) as a monad   [0,2,0,0,0,0,0,0,0,3]
       ‘  -   increment (vectorises)              [1,3,1,1,1,1,1,1,1,4]
Æf        - prime factorisation                   [13,13,71]
  Q       - deduplicate                           [13,17]
   Ç      - call the last link (1) as a monad     [0,2,0,1,0,0,0,1,0,0]
    æ.    - dot product                           8


Oder verwenden Sie Punktprodukt
H.PWiz

2

APL (Dyalog) , 43 41 Bytes

CY'dfns'
+/×/+/¨⎕D∘.=⍕¨(⎕D,r)(∪3pco r←⎕)

Probieren Sie es online aus!

Wie?

r←⎕ - eingegeben in r

3pco - Hauptfaktoren

- einzigartig

⎕D,r- rvorangestellt mit0-9

⍕¨ - Formatieren Sie die Faktoren und den vorangestellten Bereich

⎕D∘.= - kartesischer Vergleich mit jedem Element der Zeichenfolge 0123456789

+/¨ - Summiere jede Zeile der beiden gebildeten Tabellen

×/ - Multiplizieren Sie die beiden verbleibenden Vektoren

+/ - Summiere den zuletzt gebildeten Vektor



1

Python 2 , 136 127 Bytes

lambda a:sum(''.join(u(a)).count(`i`)*-~`a`.count(`i`)for i in range(10))
u=lambda a:[`j`for j in range(2,a)if a%j<1>len(u(j))]

Probieren Sie es online aus!

Credits



@ Mr.Xcoder Aktualisiert, danke, dass du mir gezeigt hast, dass -~ich immer ein bisschen verwirrt war. Und ich muss mich an das <1Ding erinnern . Danke für die Hilfe.
Neil

Sie können einen Blick durch nehmen diese für -~und verwandte Themen.
Herr Xcoder
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.