由來
中國使用“九九口訣”的時間較早。在《荀子》、《管子》、《淮南子》、《戰國策》等書中就能找到“三九二十七”、“六八四十八”、“四八三十二”、“六六三十六”等句子。由此可見,,《九九乘法歌訣》就已經開始流行了。古希臘、古埃及、古印度、古羅馬沒有進位制,原則上需要無限大的乘法表,因此不可能有九九表。例如希臘乘法表必須列出7x8,70x8,700x8,700x8,7000x8……。相形之下,由於九九表基於十進位制,7x8=56,70x8=560,700x8=5600,7000x8=56000,只需7x8=56一項代表。
古埃及沒有乘法表。考古家發現,古埃及人是通累次迭加法來計算乘積的。例如計算5x13,先將13+13得26,再迭加26+26=52,然後再加上13得65。
巴比倫算術有進位制,比希臘等幾個國家有很大的進步。不過巴比倫算術採用60進位制,原則上一個“59x59”乘法表需要59*60/2=1770項;由於“59x59”乘法表太龐大,巴比倫人從來不用類似於九九表的“乘法表”。考古學家也從來沒有發現類似於九九表的“59x59”乘法表。不過,考古學家發現巴比倫人用獨特的1x1=1,2x2=4,3x3=9……7x7=49,……9x9=81……16x16=256……59x59=3481的“平方表”。要計算兩個數a,b的乘積,巴比倫人則依靠他們最擅長的代數學,axb=((a+b)x(a+b)-axa-bxb)/2。例如7x9=((7+9)x(7+9)-7x7-9x9)/2=(256-49-81)/2=126/2=63.
古瑪雅人用20進位制,跟現代世界通用的十進位制最接近。一個19x19乘法表有190項,比九九表的45項雖然大三倍多,但比巴比倫方法還是簡便得多。可是考古學家至今還沒有發現任何瑪雅乘法表。
用乘法表進行乘法運算,並非進位制的必然結果。巴比倫有進位制,但它們並沒有發明或使用九九表式的乘法表,而是發明用平方表法計算乘積。瑪雅人的數學是西半球古文明中最先進的,用20進位制,但也沒有發明乘法表。可見從進位制到乘法表是一個不少的進步。
中國春秋戰國時代不但發明了十進位制,還發明九九表。後來東傳入高麗、日本,經過絲綢之路西傳印度、波斯,繼而流行全世界。十進位制和九九表是古代中國對世界文化的一項重要的貢獻。今日世界各國較少使用希臘等國的乘法。
九九表的特點
1、九九表一般只用一到九這9個數字。
2、九九表包含乘法的可交換性,因此只需要八九七十二,不需要“九八七十二”,9乘9有81組積,九九表只需要1+2+3+4+5+6+7+8+9=45項積。明代珠算也有採用81組積的九九表。45項的九九表稱為小九九,81項的九九表稱為大九九。
3、古代世界最短的乘法表。瑪雅乘法表須190項,巴比倫乘法表須1770項,埃及、希臘、羅馬、印度等國的乘法表須無窮多項;九九表只需45/81項。
4、朗讀時有節奏,便於記憶全表。
5、九九表存在了至少三千多年。從春秋戰國時代就用在籌算中運算,到明代則改良並用在算盤上。現在,九九表也是國小算術的基本功。
現在人們一般把那些有心計、會算計、善謀劃的人形容為心裡有“小九九”。
乘法口訣表
1×1=1
1×2=22×2=4
1×3=32×3=63×3=9
1×4=42×4=83×4=124×4=16
1×5=52×5=103×5=154×5=205×5=25
1×6=62×6=123×6=184×6=245×6=306×6=36
1×7=72×7=143×7=214×7=285×7=356×7=427×7=49
1×8=82×8=163×8=244×8=325×8=406×8=487×8=568×8=64
1×9=92×9=183×9=274×9=365×9=456×9=547×9=638×9=729×9=81
c語言代碼
#include"stdio.h"
voidmain()
{inta,b,x=9;
for(a=1;a<=x;a++)
{for(b=1;b<=a;b++)
printf("%d*%d=%d\t",b,a,(a*b));
printf("\n");
}
}
php語言代碼
//99乘法表從小到大排列
<?php
for($i=1;$i<10;$i++){
for($j=1;$j<=$i;$j++){
echo"$j*$i"."=".$j*$i;
//橫排循環
echo"|";
}
echo"<br><hr>";
//豎排循環
}
?>
任意口訣
#include"stdio.h"
kj(intx);
voidmain()
{inti;
printf("請輸入要得表的數");
scanf("%d",&i);
printf("\t%d的乘法口訣表\n",i);
kj(i);
}
kj(intx)
{inta,b;
for(a=1;a<=x;a++)
{for(b=1;b<=a;b++)
printf("%d*%d=%d",b,a,(a*b));
printf("\n");
}
}