无心人 发表于 2008-4-30 13:51:15

估计是野蛮算法
暴力破解

无心人 发表于 2008-4-30 13:59:37

应该存在些筛选条件

比如不能有大因子吧

mathe 发表于 2008-4-30 14:00:04

的确是野蛮算法:)如果放到无心人的100多台机器,也许运行上一个月或者一年的,能够计算到$10^14$到$10^15$:lol
而在我自己的Linux上,我准备让它算到$10^11$,估计要花几个小时。
比如我们要搜索1~N中所有的目标数。
首先可以计算出1~$sqrt(N)$之间的所有素数。
事先开两个数组sums和prods都初始化为1
然后对于每个这个范围的素数p,我们对于p的所有倍数pk,计算出pk中含因子p的次数c
然后我们可以将prods乘上$p^c$,sums乘上$p^c+p^{c-1}+...+1$
最后我们再扫描一次prods数组,如果prods[ x ]里面的数据小于x,那么x/prods[ x ]肯定是一个素数,
这时候我们只要将prods再乘上这个素数加1就可以了。
当然实际计算过程中我们不可能保存整个sums和prods,需要分段计算。我是每1000000个数据一段

mathe 发表于 2008-4-30 14:02:18

附件是代码,按惯例1枚金币:lol

mathe 发表于 2008-4-30 14:04:10

原帖由 无心人 于 2008-4-30 13:59 发表 http://images.5d6d.net/dz60/common/back.gif
应该存在些筛选条件

比如不能有大因子吧
显然不能够是素数。
不过看前面几个结果都是素数的2倍,显然可以出现大因子

无心人 发表于 2008-4-30 14:09:36

:)

厉害啊

mathe 发表于 2008-4-30 14:22:36

发现前面计算的结果中
n和n+1都是$2^a*p$和$3^b*q$形式的数特别多(其中p,q是大素数)(2975不满足这个条件)
看来可以根据这个规律来搜索比较大的范围的解,不过这个结论我还没有分析原因

medie2005 发表于 2008-4-30 14:23:30

呵呵,我开始估计也是用经典筛法.不过你这个是分段筛.:)

mathe 发表于 2008-4-30 14:32:00

特殊情况1:
$q=3^(b+1)-10$是素数
$p=(3^b*q+1)/2$是素数
那么我们可以找到一组特殊解:
$n=2p$

无心人 发表于 2008-4-30 14:32:20

觉得1000000不是个好的长度

能不能使用素数的连乘积长度??
页: 1 [2] 3 4 5
查看完整版本: 因子和相等的连续数