一个概率问题:1024bit的大整数,能够完全分解为小于65536的质因子的概率有多大?

showjim 2009-10-07 09:04:51
比如:32bit的整数除了大于65536的质数外都可以 完全分解质因子。
不求精确解,有好的想法也行。
...全文
275 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
daidodo 2009-10-11
  • 打赏
  • 举报
回复
mark
绿色夹克衫 2009-10-10
  • 打赏
  • 举报
回复
关于求近似的部分,比较复杂,以我的水平搞起来比较费神,可以问问mathe,
对他来说可能不算太难!

[Quote=引用 7 楼 sbwwkmyd 的回复:]
引用 5 楼 litaoye 的回复:
大概是(1-1/p1)(1-1/p2)(1-1/p3)......(1-1/pn)

其中p1-pn是65536-2^1024 之间的质数

如果是求近似的话,可以根据素数的密度做一个近似,结果k应该满足

2^(-1012 / ln(2^16)) < k < 2^(-1012 / ln(2^1024))

不过这个范围比较大,可以用积分去逼近一下试试

我曾经想过以2^x (32 <=x <=2048)这些数点上迭代近似值,又怕幂次方太大(1024也可能是2048),运算过程“失之毫厘,差之千里”;除非可以抛弃幂次方运算,某个因子差几倍也没关系。

引用 6 楼 feiyangdn 的回复:
大概约为
1-(1-1/p1)(1-1/p2)(1-1/p3)......(1-1/pn)
其中p1-pn是从2到65536之间的所有素数(包括2)

这个明显是错误的,怎么可能和2^1024这个数毫无关系呢?
引用 6 楼 feiyangdn 的回复:
解释:
任意一个整数(很大),被2整除的概率为1/2, 在不被2整除的前提下被3整除的概率为1/3,同时不被2和3整除的情况下被5整除的概率为1/5。。。。。。
这没有去证明,只有素数序列才能满足上面的规则。

您应该没有看清问题,要求是“完全分解质因子”,不过也谢谢你的回复。

谢谢大家的关注,继续等待...
[/Quote]
feiyangdn 2009-10-09
  • 打赏
  • 举报
回复
大概约为
1-(1-1/p1)(1-1/p2)(1-1/p3)......(1-1/pn)
其中p1-pn是从2到65536之间的所有素数(包括2)

举个例子:
32bit的整数除了大于10的质数外都可以 完全分解质因子的概率约为
1-(1-1/2)(1-1/3)(1-1/5)(1-1/7) = 1-24/105 = 81/105

其中大数与参考数相差越悬殊那么概率值越精确

解释:
任意一个整数(很大),被2整除的概率为1/2, 在不被2整除的前提下被3整除的概率为1/3,同时不被2和3整除的情况下被5整除的概率为1/5。。。。。。
这没有去证明,只有素数序列才能满足上面的规则。
绿色夹克衫 2009-10-09
  • 打赏
  • 举报
回复
大概是(1-1/p1)(1-1/p2)(1-1/p3)......(1-1/pn)

其中p1-pn是65536-2^1024 之间的质数

如果是求近似的话,可以根据素数的密度做一个近似,结果k应该满足

2^(-1012 / ln(2^16)) < k < 2^(-1012 / ln(2^1024))

不过这个范围比较大,可以用积分去逼近一下试试
showjim 2009-10-09
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 litaoye 的回复:]
大概是(1-1/p1)(1-1/p2)(1-1/p3)......(1-1/pn)

其中p1-pn是65536-2^1024 之间的质数

如果是求近似的话,可以根据素数的密度做一个近似,结果k应该满足

2^(-1012 / ln(2^16)) < k < 2^(-1012 / ln(2^1024))

不过这个范围比较大,可以用积分去逼近一下试试
[/Quote]
我曾经想过以2^x (32<=x<=2048)这些数点上迭代近似值,又怕幂次方太大(1024也可能是2048),运算过程“失之毫厘,差之千里”;除非可以抛弃幂次方运算,某个因子差几倍也没关系。

[Quote=引用 6 楼 feiyangdn 的回复:]
大概约为
1-(1-1/p1)(1-1/p2)(1-1/p3)......(1-1/pn)
其中p1-pn是从2到65536之间的所有素数(包括2)
[/Quote]
这个明显是错误的,怎么可能和2^1024这个数毫无关系呢?
[Quote=引用 6 楼 feiyangdn 的回复:]
解释:
任意一个整数(很大),被2整除的概率为1/2, 在不被2整除的前提下被3整除的概率为1/3,同时不被2和3整除的情况下被5整除的概率为1/5。。。。。。
这没有去证明,只有素数序列才能满足上面的规则。
[/Quote]
您应该没有看清问题,要求是“完全分解质因子”,不过也谢谢你的回复。

谢谢大家的关注,继续等待...
showjim 2009-10-08
  • 打赏
  • 举报
回复
谢谢楼上的,是要完全分解,也就是说质因子都要小于65536。
对于求精确解的递归算法,最大深度接近1000,每层的计算量分解成6千多个递归。时间复杂度太高,不能满足需求。
求出n以内质数的个数,对于解决这个问题好像也没有什么帮助。
不过还是谢谢你的回复。
PeacefulBY 2009-10-08
  • 打赏
  • 举报
回复
如果是要求分解后的所有质因子部分小于65536的话,可以用素数筛法和容斥原理,求出65535以内的所有素数2、3、5、7......那么,2的倍数满足条件,3的倍数满足条件等等(注意减去重复计算的部分,例如6的倍数),除此之外,大于65535的质数,或者在这个筛的过程中没有筛到的数(即质因子中没有小于65535的),就是不满足条件的;
如果是要求分解后的所有质因子都要小于65535的话,依然可以用上面的思想,用f(n)表示n以内满足条件的数的个数,那么对于n以内的所有偶数,除以2之后相当于f(n/2);对于n以内的所有3的倍数,除以3之后相当于f(n/3);依此类推,依然注意减去重复计算的部分,除此之外,如果都不能被65535内的任一个素数整除,说明其必有质因子大于65535。这里用到的是递归的思想。
以上是求精确解的方法。非精确解的话,有一个公式表示对于很大的n以内质数的个数,也许会有帮助,鄙人数论功底不行,爱莫能助~
swandragon 2009-10-08
  • 打赏
  • 举报
回复
路过,帮顶
PeacefulBY 2009-10-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sbwwkmyd 的回复:]
谢谢楼上的,是要完全分解,也就是说质因子都要小于65536。
对于求精确解的递归算法,最大深度接近1000,每层的计算量分解成6千多个递归。时间复杂度太高,不能满足需求。
求出n以内质数的个数,对于解决这个问题好像也没有什么帮助。
不过还是谢谢你的回复。
[/Quote]
的确复杂度很高,不知动态规划能有多少帮助;或者可以考虑转化为下面的问题:
设m为65536内最大的质数,k为65535内质数个数(约6000)
那么,所有满足条件的数可以表示为2^A1 * 3^A2 * 5^A3 *......* m^Ak
其中,Ai为非负整数,现在问题即为,求下面不等式的所有非负整数解的个数:
2^A1 * 3^A2 * 5^A3 *......* m^Ak <= 2^1024
两边取对数得:
A1*log2 + A2*log3 + A3*log5 + ...... + Ak*logm <= 1024*log2
取对数后避免了大整数运算。这是一个背包问题,求精确解的话是NP难的;求近似解或许可以通过离散化进行动态规划……
另,也可以看成是高维立方体内的格点问题,但这似乎是一个世界性难题,不知道现在有没有解决……

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧