找回密码
 欢迎注册
楼主: wayne

[提问] 关于整数的等幂和拆分的计数问题

[复制链接]
发表于 2010-6-18 16:52:24 | 显示全部楼层
9# wayne


对于我来说,这么大的数通常没什么意义,呵呵
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-6-18 17:02:25 | 显示全部楼层
7# qianyb


一觉醒来,发现将10000表示成20个整数的平方也计算出了,共有257559629384518810765941633263639704组解,比1282051358533580267640长,
wayne 发表于 2010-6-18 16:27

其实只要n不是很大,用动态规划是很快的。
比如将10000表示成20个整数的平方,我们首先需要将100以内所有数据的平方计算出来。
于是我们得到了使用1个整数的平方可以表示的不超过10000的数的集合S1(共100个数)
将S1中每个数再加上S1中另外一个数,如果结果不超过10000,可以得到两个整数的平方和不超过10000的集合S2,(并且可以算出每个元素的计数)然后可以计算S4,S8,S16.在通过S4和S16计算出S20.
其中每趟累加需要O(n^2)的时间,如果k个数字平方和,通常可以通过计算O(log(k))个集合得出最终结果。
当然,上面的方法对于20个整数的排序没有要求。
如果我们要求整数递增排序,那么可以在增加一个参数,比如计算使用了k个整数的平方和,最大整数为h,所能表达的和的集合以及每个元素的计数
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-6-18 17:33:42 | 显示全部楼层
10#
可是数论上计数公式不幸地要求因数分解,偶大致知道因数分解目前没有多项式算法。求两个数的最大公约数,数论的公式也是要求因数分解,可是存在绕过因数分解的欧几里德算法。所以我有此疑问,即在这个问题上,你们的不事分解的搜索算法会不会比基于计数公式的算法效率还高。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-6-18 19:14:50 | 显示全部楼层
mathe好神奇的速度。
=========================
那个d是函数的一个参数,你可以视为固定的。

比如,第一个方程的解的个数就是  SquaresR[d,n]
将45表示成两个整数的平方和,就是SquaresR[2, 45]=8


将45表示成两个整数的平方和,就是SquaresR[2, 45]=8
包括负整数?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2010-6-19 10:49:14 | 显示全部楼层
13# hujunhua
因式分解的效率还是比较不错的。
这里的n一般也就几位数,  远远小于密码学里的几十几百位数的分解那种数量级,

您说的还没有多项式时间的算法,是针对数的位数说话的吧
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2010-6-19 10:50:21 | 显示全部楼层
14# northwolves
嗯,是的
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2010-6-19 10:53:39 | 显示全部楼层
12# mathe

大致明白了。

纠正了我对Mathematica一直以来的一个错误认识:以为Mathematica封装的每一个高级函数一定都封装了优秀的数学理论。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-4-29 00:56 , Processed in 0.052191 second(s), 14 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表