之前我們做了這樣一道題:
一位商人有一個40磅的砝碼,由於跌落在地而碎成4塊。後來,稱得每塊碎片的重量都是整磅數,而且可以用這4塊來稱從1至40磅之間的任意整數磅的重物。
問:這4塊砝碼碎片各重多少?
我們求出來是1、3、9、27,並且用編程做了驗證。
最後,我們還得出這樣一個結論:
如果只用+和-,那麼三進制對應的數字:
111以內可以用1、10、100的組合表示。
1111以內可以用1、10、100、1000的組合表示。
11111以內可以用1、10、100、1000、10000……
這個結論有些人可能不太明白。
現在,我用十進制說一遍好了:
①
已知:
1=3的0次方;
3=3的1次方;
9=3的2次方;
27=3的3次方;
81=3的4次方;
243=3的5次方;
……
②
如果,用1、3、9、27可以表示40以內的任一數字。
40=(3的4次方-1)÷2
③
那麼,用1、3、9、27、81可以表示121以內的任一數字。
121=(3的5次方-1)÷2
④
那麼,用1、3、9、27、81、243可以表示364以內的任一數字。
364=(3的6次方-1)÷2
⑤
這個東西還可以一直推下去,一直到3的n次方。
OK,今天的最後,我們用編程的方法驗證一下。
因為121=11²,正好在計算機上可以畫一個正方形對應它。
所以我們驗證一下③好了。
(1)當我們什麼都不輸入時:
(2)當我輸入1、3、9、27、81時:
(3)為了驗證,我們可以把1、3、9、27、81改成別的看一下。
當改成1、4、8、28、80時:
當改成1、3、10、27、80時:
(4)大家完了可以自己複製代碼試一下,代碼在後面。
我們還可以輸入1、3、9、27,前40全部會變紅,這也印證了之前的結論。
(5)最後給大家放上代碼。
(新建一個文本文檔,複製下面的代碼,然後保存退出,把文件名後綴改成.html,用瀏覽器打開,就可以執行程序了)
輸入數字:
<button>確定/<button>
function p(a,b,c,d,e){
var br=document.createElement("br");
document.body.appendChild(br);
var i=1;
while(i<122)
{
var btn=document.createElement("BUTTON");
btn.id=i;
btn.style.height ="40px";
btn.style.width ="40px";
var t=document.createTextNode(i++);
btn.appendChild(t);
document.body.appendChild(btn);
if((i-1)%11==0)
{
var br=document.createElement("br");
document.body.appendChild(br);
}
}
for(x1=-1;x1<2;x1++){
for(x2=-1;x2<2;x2++){
for(x3=-1;x3<2;x3++){
for(x4=-1;x4<2;x4++){
for(x5=-1;x5<2;x5++){
var k=x1*a+x2*b+x3*c+x4*d+x5*e;
if(k>0)
{
var str = document.getElementById(k);
str.style.background="red";
}
}
}
}
}
}
}
閱讀更多 數學與編程 的文章