查看单个帖子
  #5 (permalink)  
旧 2008-05-21
Elminster 的头像
Elminster Elminster 当前离线
超级版主
 
注册日期: 2002-09-09
帖子: 1,764
Elminster 正向着好的方向发展
默认 回复: 把整数分解为质数和

引用:
作者: polyrandom 查看帖子
我没想出O(I*K)的算法,我想出的就是最简单的brute force,所以连复杂度都懒得去算了。
brute force 也就 O(2^k * k) 的复杂度,考虑到 I 和 k 的关系,其实快的有限。这个算法的基本思路是:

1. 记 是能够所有能够被分解为前 m 个质数中某些数之和且小于 I 的数构成的集合。
2. 则 ,这里 是第 m+1 个质数, 中每个元素加上 后得到的集合。
3. 从 开始算到 ,最后检查一遍就好了。

这个过程中任意一个 ,大小不超过 I ,很容易做到计算每个 的时候复杂度是 O(I) ,一共计算 k 个,所以复杂度是 O(I*k)。
回复时引用此帖