==>算术/数字/平方/三位数.s<==10**12以下的全套解决方案是1 -> 12->43 -> 97 -> 4912 -> 14421 -> 44138 -> 1444107 -> 11449212 -> 4494431488 -> 9914 9414470107->49149 914493 87288 -> 14 99919 94944956 10729 -> 9 14141 14499 114414466 53271 -> 199 49914 44949 9944131487 17107 -> 9914 41941 99144 494492 10810 79479 -> 4 44411 91199 99149 11441如果该算法以我之前介绍的形式使用,则生成整个集合P_n在P_{n+1}开始之前,存储要求开始变得尴尬。对于n>8,我切换到深度优先策略,生成P_i(i=9..12)中的所有元素与P_8中的特定x依次对应于每个x。这意味着解决方案当然,不要以任何特定的顺序出现。CPU时间为16.2秒(IBM 3084)。在文章中<1990年2月6日252.28153@sun.soe.clarkson.edu>,史蒂文斯塔德尼基建议交替使用三位数,特别是{1,4,6}(有许多解决方案)和{2,4,8}(很少)。我在上运行了我的程序这些也会达到10**12:1 -> 12 -> 44 -> 168 -> 6412 -> 14421 -> 44138->1444108 -> 11664119 -> 14161121 -> 14641129 -> 16641204 -> 41616408 -> 1 66464804 -> 6 464162538 -> 64 414443408->116 144646642 -> 441 1616412908 -> 1666 1646425771 -> 6641 4444178196 -> 61146 1441681619 -> 66616 611613 33858->11 14611 641642040 00408 -> 41 61616 64641 664646681 64962 -> 446 44441 64444 614448131 18358 -> 661 16146 41166 1616440182 85038->16146 61464 66146 61444(史蒂文的最后一个soln.)1 20068 50738 -> 1 44164 46464 46111 446441 26941 38988 -> 1 61141 16464 66616 641441 27069 43631 -> 1 61466 41644 14114 641614 01822 24262 -> 16 14611 14664 16614 446444 05784 63021 -> 16 46611 66114 66644 4644178 51539 12392 -> 6164 66666 14446 44111 616642 -> 422 -> 484168 -> 28224478 -> 2 284842878->82 82884(史蒂文的最后一个soln.)2109 12978 -> 44 48428 42888 28484(所以史蒂文的“还有吗?”的答案是“是的”。){1,4,6}的CPU时间为42.9秒,{2,4,8}为18.7秒。这个对应于一个有趣的问题:{1,4,6}与异常大集合P_n(|P_8|=16088{1,4,6}与|P_8|=5904({1,4,19})相比{2,4,8}的解与小P_n(|P_8)无关|=6816表示{2,4,8})。有人能令人信服地挥手解释吗为什么{2,4,8}的解如此稀疏?我怀疑我们现在已经到了改进算法的地步需要。确定所有n位数解(即。2个数字的方块)使用这个最后一个数字的第一个数字基本上是常数*3**n.迪安·希克森<90036.134503HUL@PSUVM比特网>,以及伊兰·瓦尔迪<1990年2月5日14249.22811@Neon.Stanford.EDU>,建议使用最重要的digit-first战略,基于以下事实平方的前n位确定(整数)平方根;也有一个运行时间常数*3**n。一次攻击可以同时结束于一次做得更好?克里斯·汤普森JANET公司:cet1@uk.ac.cam.phx互联网:cet1%电话:cam.ac.uk@nsfnet-relay.ac.uk嘿,伙计们,怎么样648070211589107021 ^ 2 = 419994999149149944149149944191494441这是David Applegate和我自己发现的(大约5分钟在DEC 3100上,程序(C)。这是小于10^42的最大正方形,具有149个属性;检查占用了一个多小时的CPU时间。正如有人建议的那样,我们使用了一个最重要/最不重要的组合数字攻击。首先,我们制作一个p位前缀表(最重要的p位数),可以以其平方中具有149属性的根开头前p位数。我们至少把这张桌子组织成桶前缀的有效q位。然后我们枚举s数字后缀,其平方的最后s位具有149属性。对于对于每个这样的后缀,我们在表中查找其最后一个q的前缀数字匹配后缀的第一个q。对于每一场比赛,我们都会考虑p+由前缀和后缀重叠q形成的s-q数字数字。这些重叠数字的正方形必须包含所有正方形拥有149处房产。生成前缀表所花费的时间为O(3^p),生成前缀表的时间为0(3^s)枚举后缀和O(3^(p+s)/10^q)以检查重叠(正在非常粗糙,忽略多项式因子)通过明智地选择p,q,和s,我们可以修正一些问题,使表中的每个桶都有大约O(1)entries:设置q=p log10(3)。设置p=s,我们最终会寻找正方形其根具有n=2-log10(3)位数字,算法耗时O(3^[n/(2-log10(3)]),大致时间为O(3~[.66n])。O(3^n)单端算法的性能,这让我们检查50%在相同的时间内有更多的数字(忽略多项式因素)。当然,组合端方法的空间成本很高。--盖伊和戴夫-- 盖·雅各布森计算机科学学院卡内基梅隆大学arpanet:guy@cs.cmu.edu宾夕法尼亚州匹兹堡,邮编:15213 csnet:Guy。雅各布森%a.cs.cmu.edu@csnet-relay公司(412)268-3056 uucp:。。。!{地震,加州大学伯克希尔分校,哈佛}!cs.cmu.edu!家伙下面是一个算法,它需要O(sqrt(n)log(n))步骤来找到所有完美的只有数字1、4和9的squares<n。这听起来不太好*但*它不需要太多内存需要加法和<。此外,实际运行时间将取决于第一个非{1,4,9}数字出现在每个方块中。设置n=1设置奇数=1而(n<最大值){if(n的所有数字都在{1,4,9}中){打印n}奇数加2将奇数加到n上}这是因为(X+1)^2-X^2=2x+1。也就是说,如果您从0开始并添加连续奇数数字等于0+1=1,1+3=4,4+5=9,9+7=16等等。为了方便起见,我从1开始了算法。“O”值来自查看最多所有数字所有完美正方形的(log(n))<n(其中的sqrt(n)最多固定次数。我没有用声称是的算法保存这些文章O(3^log(n)),所以我不知道他们的计算是否需要计算大的乘法或sqrt()数字。O(3^log(n))听起来很合理,所以我打算除非我另有消息,否则他们会这么做。有什么意见吗?如果你只是想刷新我的记忆,请发电子邮件关于其他算法。安德鲁·查尔斯acgd@ihuxy.ATT.COMM公司