Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >是帕斯卡的素数吗?

是帕斯卡的素数吗?
EN

Code Golf用户
提问于 2018-01-01 05:23:03
回答 6查看 1.7K关注 0票数 18

众所周知,奇数素数将在帕斯卡三角形中出现两次。然而,并非所有在Pascal三角形中出现两次的数字都是素数。我们称这些数字为帕斯卡素数。

Pascal素数是在Pascal三角形中出现两次的复合数。前几个帕斯卡素数是

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
4, 8, 9, 12, 14, 16, 18, ...

您的挑战是将正整数n作为输入并输出true或false,这取决于n是否是Pascal素数。这是密码-高尔夫,所以最短的程序获胜!

EN

回答 6

Code Golf用户

发布于 2018-01-01 05:37:09

Wolfram语言(数学),45字节

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CompositeQ@#&&Binomial~Array~{#-1,#}~FreeQ~#&

在网上试试!

每个复合数字n在第n行上正好出现两次,以后不能出现。所以Pascal素数的条件是它们根本不出现在第一个n-1行中。

据我所知,这比检查它在前n行中出现两次和能够使用!PrimeQ更短。

票数 10
EN

Code Golf用户

发布于 2018-01-01 06:12:19

Python 2,93字节

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def f(n):l=[1];exec"(n in l)>=any(n%k<1for k in range(2,n))>q;l=map(sum,zip([0]+l,l+[0]));"*n

在网上试试!

这是一个命名函数f,它通过出口码为Primes输出0,否则为1。

这是怎么回事?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def f(n):l=[1];                       # Define a function f (arg. n) and a list l = [1].
exec"..."*n                           # Execute n times.
(n in l)                              # Boolean: "n is in l?" is greater than...
   >=any(n%k<1for k in range(2,n))    # the boolean: "Is n composite?"?
            >q;                       # If the boolean comparison returns a falsy
                                      # result, then continue on without any difference.
                                      # Otherwise, evaluate the other part of the
                                      # inequality, thus performing "is greater than q".
                                      # Since we have no variable "q", this terminates
                                      # with exit code 1, throwing a "NameError".
l=map(sum,zip([0]+l,l+[0]));          # Generate the next row in Pascal's triangle,
                                      # By zipping l prepended with a 0 with l appended
                                      # with a 0 and mapping sum over the result.

这基本上检查n是否出现在Pascal三角形的前n行中,或者它是否为素数,如果满足这两种条件,则抛出一个错误。

由于卵子,保存了1个字节。

票数 4
EN

Code Golf用户

发布于 2018-01-02 15:57:55

R,55字节

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function(n)sum(!n%%1:n)>2&!n%in%outer(1:n-1,1:n,choose)

在网上试试!

sum(!n%%1:n)>2是复合测试,outer(1:n-1,1:n,choose)计算Pascal三角形的行0n-1,所以我们确保n不出现在那里。

票数 2
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文