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找到的 检验发现仅仅是比较近似,看来这个代码不行,个位,VB上的代码要怎样写呀? 第二个就不对了
回复 11# 282842712474 的帖子
我先惊喜一阵子,可后来检验发现24以后的几个都不对啊 这个最好是求平方剩余再判定
就快了
什么数的平方剩余少?? n = 100 22个
n = 120 18个
n = 240 10个
n = 14400 528个
可以看到,越使用大的高度复合数模
过滤概率越高
但过滤概率和模数字大小关系无关
14400是个比较好的数字,过滤出的可能平方数字是3.667%
需要预先保存的表是14400个
更大的数字比如57600虽然概率还好,但就有限了,而且预先保存的东西也多了
回复 17# 无心人 的帖子
不懂,:( 就是把数字当做14400进制数字,则平方数字的14400进制的个位仅有528种可能那么,只有14400进制个位数字是这528种的才测试
而这里面仅用到了加法!!!!
只有上面测试通过的
才进行高精度计算,进一步测试是否确实是平方数字 我又想了下
似乎240进制就不错了
1/24的概率
另外,是否进行混合模测试??
连续通过几个素数的测试??