素数


11

这没有实际目的,但打高尔夫球可能会很有趣。

挑战

给定数字n

  1. 计算n中每个数字的数量并向每个计数加1
  2. 采取的素数分解 n
  3. 计算n的素数分解中每个数字的数量,但不包括重复的素数
  4. 通过将步骤1和步骤3中列表的各个元素相乘来创建一个新列表
  5. 返回该列表的总和

例如,121具有两个1s和a 2,因此您将从步骤1中获得以下列表:

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

121的素数分解为11 2,这给出了步骤3的以下列表:

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

注意我们如何不计算指数。这些相乘得到:

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

此列表的总和为6。

测试用例

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

笔记

  • 禁止出现标准漏洞
  • 输入和输出可以采用任何合理的格式。
  • 对于数字中未出现的数字,您应在列表中保留一个(对于步骤3为零)。
  • 这是,因此以字节为单位的最短解决方案为准。

在步骤3中,667(= 23 * 29)是否等于2 2、1 3和1 9?
乔纳森·艾伦,

@JonathanAllan是的。
RamenChef

2
@ wizzwizz4 232792560-> [2,1,4,2,1,2,2,2,1,2](步骤1); 2*2*2*2*3*3*5*7*14*17*19(第2步); 因此[0,5,1,2,0,1,0,2,0,1](步骤3);然后[0,5,4,4,0,2,0,4,0,2](步骤4);因此应该输出21
乔纳森·艾伦,

@JonathanAllan如果我可以数数的话,那就太好了。:-/
wizzwizz4

Answers:


2

果冻,16字节

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

在线尝试!

独立于开发,与开发不完全相同 其他Jelly解决方案

说明

我将242用作示例输入。

ṾċЀØ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

果冻 18  17 字节

-1字节归功于Caird coinheringaahingH.PWiz(避免将两个向量配对)

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

单链链接,采用正整数并返回非负整数。

在线尝试!

怎么样?

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


或使用点积
H.PWiz

2

APL(Dyalog)43 41字节

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

在线尝试!

怎么样?

r←⎕ -输入 r

3pco - 主要原因

- 独特

⎕D,r- r前缀为0-9

⍕¨ -格式化因子和前置范围

⎕D∘.= -与字符串的每个元素进行笛卡尔比较 0123456789

+/¨ -对形成的两个表的每一行求和

×/ -将两个向量相乘

+/ -将最后形成的向量相加



1

Python 2中136个 127字节

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))]

在线尝试!

学分



@ Mr.Xcoder已更新,感谢您向我展示了对我的使用,-~对此我总是有些困惑。我需要开始记住那<1件事。谢谢您的帮助。
尼尔,

您可以浏览一下有关-~和相关内容。
Xcoder先生17年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.