疯狂的图书管理员的素数算术序列


18

好吧,图书馆员发现您使用排序算法欺骗了您的工作,所以现在您将受到惩罚。您被命令创建一些代码,以便图书馆员可以打动他们单恋的对象,即数学老师。所以,这就是什么“其他职责分配”的意思...

每个人都熟悉以10为底的自然数序列N

0、1、2、3、4、5、6 ...

从这一点,我们可以生成素数序列,我们称之为P,使得每一个元素P在刚好两个除数ñ,即1与自身。该顺序是:

2、3、5、7、11、13 ...

好的,到目前为止很常规。

一个漂亮的函数的图书管理员思想F(X,Y) ,需要一个数xÑ,条件0 <= x <= 9,以及一些yÑ,并插入xy在每个位置的十进制扩展(即,在前面加上,插入或附加xy),然后返回排序后的新数字集。
例如,F(6,127)将导致

1267、1276、1627、6127

不过,那仍然有点无聊。图书管理员希望通过指定一个新函数(升序排列)来使事情更加有趣z -> {p : p in P and F(z,p) subset of P}
例如,z(7)将是

3,19,97,433,487,541,...

因为3773都是素数,719 179并且197都是素数,依此类推。

请注意,z(2)为空,因为没有2追加的素数永远不会是素数。对于{0,4,5,6,8}同样。

您的任务是编写代码,为给定x生成并输出序列z(x)中的前100个数字。

输入值

一个整数X,使得0 <= x <= 9。输入可以通过函数参数STDIN或等效参数进行。

输出量

由您选择的前100个数字组成的序列,应为STDOUT或等效的序列,以使该序列如上所述满足z(x)。如果z(x)为空(如{0,2,4,5,6,8}的情况),Empty Set则应改为输出单词。

限制条件

  • 这是代码高尔夫球,因为您需要将其转录为索引卡,以便图书馆员向数学老师展示,并且您的手容易抽筋。
  • 适用标准漏洞限制。图书管理员不容忍作弊者。

参考序列

x = 1:A069246
x = 3:A215419
x = 7:A215420
x = 9:A215421

相关: 查找最大的易碎素数 / 从子字符串中查找最小的素数 / 查找删除数字后仍为素数的最大素数

Answers:


5

Pyth,49个字节

像Python3和其他Pyth答案一样,查找100个数字的运行时间也令人望而却步。(测试套件有10个)

?}z"1379".f&!tPZ!|FmtPvjzc`Z]dhl`Z*TT3"Empty Set"

在线尝试


1
拖尾"是不必要的,尽管非常好。
FryAmTheEggman

感谢您的提醒。因为EOL不再终止字符串,所以我避免了未终止的字符串,但是EOF当然仍然有效
Brian Tuck

4

Python 3,188个字节

x=input()
k=1
i=100
if x in"024568":i=print("Empty Set")
while i:k+=1;s=str(k);i-=all(sum(p%d<1for d in range(2,p))<4for p in[k*int(s[:j]+x+s[j:])for j in range(len(s)+1)])and not print(k)

高尔夫不好,但是现在有一些东西。p in P and F(z,p) subset of P我们不检查,而是检查p*f每个半素数f in F(z,p)。将其与试验划分相结合进行素性测试,您将获得一个O(scary)算法。


+1O(scary)
AdmBorkBork,2015年

1
将我设置为“无”的不错技巧。
lirtosiast 2015年

3

Perl,124个字节

$p=prime_iterator;y/1379//or$i=+~print'Empty Set'}while($i<100){$_=&$p;is_prime"$`@F$'"or redo while//g;$i++

需要以下命令行选项:-palMntheory=:all,计数为16。输入来自stdin。

@DanaJMath::Prime::Util模块用于perl(已随pragma加载ntheory)。通过以下方式获取:

cpan install Math::Prime::Util
cpan install Math::Prime::Util::GMP

is_prime对于所有小于2 64的值都是确定性的,足以满足我们的目的。


样品用量

$ echo 2|perl -palMntheory=:all oscary.pl
Empty Set

$ echo 7|perl -palMntheory=:all oscary.pl
3
19
97
433
487
541
691
757
853
1471
.
.
.
718705783
720574573
737773357
745157779
747215167
767717017
768743377
770294977
771778477
774577777

预期的运行时间

x = 1:1m 09.2s
x = 3:0m 04.2s
x = 7:2m 52.5s
x = 9:0m 11.5s


1

佩思,58

L}bPb|*"Empty Set"}Qj204568T.f&yZ.Amyi++<JjZTdQ>JdThl`Z100

测试套件仅计算前10个数字,因为生成剩余数字的时间太长。蛮力既强迫原始性又强迫数字插入。演示了如此糟糕的性能,以至于我无法将其运行到100级,因此请告诉我是否有问题。

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.