作者jimfan (jimfan)
看板Prob_Solve
标题[闲聊] Project Euler-第51题
时间Sat Sep 16 23:03:19 2017
刚刚灵光一闪,想到一个比较有效的演算法。用的语言是 APL。
剧烈进行中,感觉快找到那八个质数了.........
更新:
问题出处:
https://projecteuler.net/problem=51
在下的 APL 程式码:
https://github.com/Jim-Fan/euler-apl/blob/master/051.apl
昨晚冲破了,要点其实不是被替换的数字而是没被替换的。以例子中的 7个质数
为例:
56003 56113 56333 56443 56663 56773 56993
1. 先从 5位质数中找出第 3、4位相同的出来,姑且命名为集合 P
2. 从 P,将3、4位去掉,合拼余下数字,转化为十进整数,如此上列质数变为:
56003 -> 56..3 -> 563
56113 -> 56..3 -> 563
56333 -> 56..3 -> 563
(... 类同)
3. 如此 563将出现 7 次,由 563在 P的位置(index),可找到 56003、
56113... 等等
至於问题所需的 8个质数,问题系由於不知有多少个位,先假定为 6位(纯粹
猜想)。并且不知道那些、多少数字需要被替换,唯有手动逐个组合试试。先
尝试 2位替换(digit[1, 2], digit[1, 3]... digit[2, 3]... digit[2, 4]
... 等等。遍寻不获再试 3位替换,终於试出答案系 digit[1, 3, 5] 被换的
质数。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 14.199.97.157
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Prob_Solve/M.1505574202.A.ABB.html
※ 编辑: jimfan (14.199.97.157), 09/17/2017 16:32:31