查尔斯·巴贝奇(1791年12月26日-1871年10月18日),英国数学家、发明家兼机械工程师。由于提出了差分机与分析机的设计概念(并有部分实做机器),被视为计算机先驱。他曾经预测自己的机器能够解决的诸多问题,并举了一个例子:
What is the smallest positive integer whose square ends in the digits 269,696?— Babbage, letter to Lord Bowden, 1837; see Hollingdale and Tootill, Electronic Computers, second edition, 1970, p. 125.找到一个最小的正整数,他的平方以269696结尾。
任务
求出巴贝奇问题的正确答案。
参考代码
/* ahkversion: 2.0-beta3 */
/* What is the smallest positive integer whose square ends in the digits 269,696? */
msgbox babbage(269696)
babbage(q){
n := floor(sqrt(q))
divisor := 10 ** (floor(log(q)) + 1)
while(mod(n * n, divisor) != q){
n += 1
}
return n
}
这个好像比较简单吧,最小的整数计算出来是25264。
/*
ahk 1.x
*/
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
#Persistent ;保持后台运行
#SingleInstance FORCE ;单实例运行模式
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetBatchLines -1
ListLines Off
res1:=”269696″
min_a_index :=ceil(sqrt(res1))-1
Gui, +LastFound +ToolWindow +AlwaysOnTop
Gui, Color, EAEAEA,2b2b2b
gui,margin,30,30
GUI, Font, w200 Q5 s10 c2b2b2b , Microsoft Yahei
GUI, ADD, BUTTON, Y+30 W200 default gstart, 开始
GUI, ADD, BUTTON, Y+30 W200 gcancleme, 停止
GUI, ADD, text, Y+20, Babbage result is …
GUI, Font, w200 Q5 s16 cred bold , Microsoft Yahei
GUI, ADD, text, Y+10 w250 , % “calculating…”
gui,show,autosize center, Babbage problem
return
start:
loop
{
temp1:=a_index . res1
temp2:=sqrt(temp1)
temp3:=round(temp2,0)+0
temp4:=temp3**2
if (temp1=temp4)
{
babbage_res:=round(temp2,0)+0
guicontrol,,static2, % babbage_res
break
}
}
return
cancleme:
exitapp
return
我的思路是反向,将269696前面加序列,求平方根后取整位,对取整后的再进行平方,将两个平方值对比,如果一样,那么这个平方根就是巴贝奇数。
第二个符合的数字才是巴贝奇提出的99736;
后面的还有的是150264, 224736 ,275264