[闲聊] Project Euler-第51题

楼主: jimfan (jimfan)   2017-09-16 23:03:19
刚刚灵光一闪,想到一个比较有效的算法。用的语言是 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] 被换的
质数。

Links booklink

Contact Us: admin [ a t ] ucptt.com