素数分解中的素数


9

我看到了PPCG 面临的另一个主要挑战,而且我确实爱我一些主要挑战。然后,我误读了介绍性文字,想知道这里的创造力是什么。

事实证明,提出的问题是微不足道的,但我想知道我(误读)的问题是否也是如此:


6可以用2 ^ 1 * 3 ^ 1表示,而50可以用2 ^ 1 * 5 ^ 2表示(其中^表示指数)。

你的任务:

编写程序或函数,以确定此数字表示形式中有多少个不同的质数。

输入:

通过任何常规方法获取的整数n,使得1 <n <10 ^ 12。

输出:

表示 n 的唯一素数所需的不同素数的数量。

测试用例:

Input      Factorisation      Unique primes in factorisation representation
24         2^3*3^1            2 (2, 3)
126        2^1*3^2*7^1        3 (2, 3, 7)
8          2^3                2 (2, 3)
64         2^6                1 (2) (6 doesn't get factorised further)
72         2^3*3^2            2 (2, 3)
8640       2^6*3^3*5^1        3 (2, 3, 5)
317011968  2^11*3^5*7^2*13^1  6 (2, 3, 5, 7, 11, 13)
27         3^3                1 (3)

这不是OEIS序列。

得分:

这是 ,以字节为单位的最低分数获胜!


预期结果是64什么?是2 (2,3)(因为6可以表示为2 * 3)还是1 (2)(忽略6)?
Emigna

对于64预期的结果为1(2)。我喜欢递归执行此操作的想法,但这不是我阅读原始问题的方式。我认为这8640是一个合适的测试用例,但应该更加明确-谢谢。
pbeentje '17

您声称这不是OEIS序列。(小)Ω功能的值不是A001221吗?
Gray Taylor

A001221相似,但由于在本练习中将指数作为质数,因此在第8和9(此处为2,A001221 1)处开始偏离。
pbeentje

知道了 写下素数分解,然后看看我写了多少个素数(不管它们扮演什么角色)。我想知道如果您再进一步将因子分解为因子会发生什么呢?
Gray Taylor

Answers:


5

Mathematica,39个字节

Count[Union@@FactorInteger@#,_?PrimeQ]&

在线尝试!

感谢Martin Ender(-11个字节)


Cases结果小于Select(-4字节):(Tr[1^Union@Cases[FactorInteger@#,_?PrimeQ,2]]&通过所有测试用例的新内核)
JungHwan Min

怎么Count[Union@@FactorInteger@#,_?PrimeQ]&样 (尚未检查所有测试用例。)
Martin Ender

@MartinEnder似乎应该工作。也通过所有测试用例。
JungHwan Min

5

05AB1E9 7字节

感谢Kevin Cruijssen节省了2个字节

ÓsfìÙpO

在线尝试!

说明

Ó        # push the prime factor exponents of the input
 sfì     # prepend the prime factors of the input
    Ù    # remove duplicates
     p   # check each if it is prime
      O  # sum

1
通过€pO合并主要因子和指数后使用-1个字节:ÓsfìÙ€pO
凯文·克鲁伊森

@KevinCruijssen:谢谢!实际上节省了2,因为不需要。
艾米尼亚(Emigna)

啊,当然..哇,不确定我怎么会错过那个,哈哈xD
凯文·克鲁伊森



4

盖亚(Gaia),6个字节

ḋ_uṗ¦Σ

在线尝试!


  • 计算素数分解,作为[素数,指数]对。

  • _ 整理列表。

  • u 删除重复的元素。

  • ṗ¦映射元素,如果找到素数则返回1,否则返回0

  • Σ 汇总列表。


3

CJam(13字节)

{mFe__&:mp1b}

在线测试套件

这非常简单:获得具有多重性的素数,减少为不同的值,过滤素数,计数。

不幸的是,马丁指出了某些情况,尽管我确实通过观察mp给出01可以映射而不是过滤的结果提供了1字节的节省,但我在原始答案中并未提出一些有趣的技巧。



1

实际上,7个字节

w♂i╔♂pΣ

在线尝试!

说明:

w♂i╔♂pΣ
w        factor into [prime, exponent] pairs
 ♂i      flatten to 1D list
   ╔     unique elements
    ♂p   for each element: 1 if prime else 0
      Σ  sum

1

Python 2中142个 135 119字节

f=lambda n,d=2:n-1and(n%d and f(n,d+1)or[d]+f(n/d))or[]
p=f(input())
print sum(f(n)==[n]for n in set(p+map(p.count,p)))

在线尝试!







0

J,20个字节

3 :'+/1 p:~.,__ q:y'

算上手工大声笑,所以请告诉我这是否关闭。

有打高尔夫球的建议吗?

无聊的提交:平整素数分解表并计数素数。



0

Javascript(ES6),145个字节

n=>{for(a=[b=l=0],q=n,d=2;q>=2;)q%d?(b&&(a.push(0),l++),d++,b=0):(q/=d,a[l]++,b=1);for(i in a){for(d=1,e=a[i];e%d;d++);e-d||n%e&&l++};return l+1}
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.