282842712474 发表于 2009-2-21 20:37:10

282842712474 发表于 2009-2-21 20:37:46


Dim a As Double
Dim i As Double
a = 23
While a < 10000000
i = Sqr(a * (a + 1) * (2 * a + 1) / 6)
If i = Int(i) Then Print "前" + Str(a) + "个正整数的平方和是" + Str(i) + "的平方"
a = a + 1
Wend


用VB找到的

282842712474 发表于 2009-2-21 20:46:26

检验发现仅仅是比较近似,看来这个代码不行,个位,VB上的代码要怎样写呀?

无心人 发表于 2009-2-21 20:46:47

第二个就不对了

wayne 发表于 2009-2-21 22:55:21

回复 11# 282842712474 的帖子

我先惊喜一阵子,可后来检验发现24以后的几个都不对啊

无心人 发表于 2009-2-21 23:09:46

这个最好是求平方剩余
再判定
就快了

什么数的平方剩余少??

无心人 发表于 2009-2-21 23:17:25

n = 100 22个
n = 120 18个
n = 240 10个
n = 14400 528个
可以看到,越使用大的高度复合数模
过滤概率越高

但过滤概率和模数字大小关系无关

14400是个比较好的数字,过滤出的可能平方数字是3.667%
需要预先保存的表是14400个
更大的数字比如57600虽然概率还好,但就有限了,而且预先保存的东西也多了

wayne 发表于 2009-2-21 23:22:57

回复 17# 无心人 的帖子

不懂,:(

无心人 发表于 2009-2-21 23:27:06

就是把数字当做14400进制数字,则平方数字的14400进制的个位仅有528种可能
那么,只有14400进制个位数字是这528种的才测试
而这里面仅用到了加法!!!!

只有上面测试通过的
才进行高精度计算,进一步测试是否确实是平方数字

无心人 发表于 2009-2-21 23:30:15

我又想了下

似乎240进制就不错了
1/24的概率

另外,是否进行混合模测试??
连续通过几个素数的测试??
页: 1 [2] 3 4 5
查看完整版本: 求 1^2+2^2+3^2+...+n^2 = m^2 的正整数解