首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是龙虾号吗?

是龙虾号吗?
EN

Code Golf用户
提问于 2021-01-24 15:01:48
回答 6查看 5.7K关注 0票数 34

Introduction

按照我自己的说法,“龙虾数”是一个包含了它的所有主要因素的数字。“龙虾”的描述灵感来自最近的问题"龙虾速度“。基本思想是,每一个素因子都可以由龙虾咀嚼这个数字的数字,直到你只剩下这个因子。

51375是龙虾的一个数字,因为它的主要因素是[3,5,137],它可以由龙虾组成:[**3**, 5**** / ****5, *137*]。另一个龙虾数量是62379,因为因子[3,29,239]可以形成[**3**,*2**9,*23*9]

挑战

给定一个数字作为输入,返回它是否是龙虾号。这是一个布尔输出,如1或0,或真或假。

精明的读者可能会意识到素数是解决这一需求的一个微不足道的解决方案,但由于他们不允许龙虾吃任何数字,他们就出局了。您的程序不能将素数标识为龙虾数。

这类似于OEIS A035140,但有一个附加要求,即因子的每个数字必须至少以相同的次数出现在数字中,并以正确的顺序出现。换句话说,132不是龙虾的数字,因为它的因素是[2,3,11],而11不能仅仅通过咀嚼132来制造。312也不是龙虾数,因为它的因素是[2,3,13],而13是不正常的。

我相信“数学”的定义是:“确定数n是否是一个复合数,使得n的所有素因子都是n的子序列”。

测试用例

代码语言:javascript
复制
59177  -> True
62379  -> True
7      -> False
121    -> True
187    -> False
312    -> False

一如既往,标准漏洞是被禁止的。

注:

我注意到,我给出的不需要处理0或1作为输入的原始推理是错误的。但是,此时需要适当的输出将使许多答案失效。因此,让我们知道,0和1都不是龙虾号,但是您也不需要将它们作为输入来处理(它们不是有效的测试用例)。如果您的代码确实正确地处理了它们,那么您可以给自己颁发龙虾代言人徽章™。

EN

回答 6

Code Golf用户

发布于 2021-01-24 15:16:16

布氏对数,5字节

这基本上是这样的:“确定数n是否是一个复合数,使得n的所有素因子都是n的子序列”。

代码语言:javascript
复制
ḋṀ⊆ᵛ?

在网上试试!

代码语言:javascript
复制
ḋṀ⊆ᵛ? (with implicit input n)
ḋ     get the prime factors of n
 Ṁ    they must be Ṁany (at least 2 to filter out primes)
  ⊆ᵛ  all of them must be an (ordered) subset of
    ? the input
票数 13
EN

Code Golf用户

发布于 2021-01-25 04:46:56

Python 2,93字节

通过退出代码输出:如果是龙虾号,则为0,否则为1

代码语言:javascript
复制
n=m=input()
i=1
while~-m:
 i+=1
 while m%i<1:m/=reduce(lambda s,c:s[c==s[:1]:],`n`,`i`)or i%n

在网上试试!

确定子序列的算法从@xnor的回答借用到字符串X是字符串Y的子序列吗?。当子序列检查失败时,将引发TypeError,并且i%n将导致在素数输入上发生ZeroDivisionError

Python 2,92字节

使用exec可以保存一个字节,而代价是对大型输入进行分段故障。

代码语言:javascript
复制
n=m=input()
i=1
exec"i+=1\nwhile m%i<1:m/=reduce(lambda s,c:s[c==s[:1]:],`n`,`i`)or i%n\n"*n

在网上试试!

票数 5
EN

Code Golf用户

发布于 2021-01-24 15:11:23

果冻,10字节

代码语言:javascript
复制
DŒPḌḟiⱮÆfẠ

在网上试试!

是如何工作的

代码语言:javascript
复制
DŒPḌḟiⱮÆfẠ - Main link. Takes an integer n on the left
D          - Digits of n
 ŒP        - Powerset of the digits
   Ḍ       - Convert back to integers
    ḟ      - Remove n from this list
       Æf  - Yield the prime factors of n
      Ɱ    - Over each prime factor:
     i     -   Index of the factor in the powerset, or 0
         Ạ - All are true?
票数 3
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/217960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档