现在的小学生从二年级上学期开始学习九九乘法口诀表,不知道大家想过这个问题没有,就是为什么乘法口诀表是十进制的呢?当然是因为我们从小学习算术是从十进制记数开始的,但是为什么人们选择了十进制来记数呢?
实际上,以十为基底的十进制数字可以变成任何其它基底的数字,一般规则是,假如目标数基底为S,用S连续除以十为基底的整数Z,所的的与数将是在以S为基底的系统中的数码。
既然选择任何一个基底都可以,那么究竟选择那个基底最合适呢?太小的基底有它的不方便之处,而大的基底要求记住更多的数字符号,并且乘法表更大。最终人们选择十作为基底不是没有原因的,回溯到文明初期,人们就开始使用十进制计数了,而且毋庸置疑这是由于我们只有十个手指头进行计算的缘故。
如果人们习惯算上脚趾,说不定也会发展出20进制的计算系统,下面一段程序就是产生二十进制乘法口诀表的程序:
#include <fstream>
#include <iostream>
#include <sstream>
#include <string.h>
using namespace std;
string twentysignal(int a)
{
stringstream ss;
ss << a;
string s1 = ss.str();
if(a == 10)
return "A";
else if(a == 11)
return "B";
else if(a == 12)
return "C";
else if(a == 13)
return "D";
else if(a == 14)
return "E";
else if(a == 15)
return "F";
else if(a == 16)
return "G";
else if(a == 17)
return "H";
else if(a == 18)
return "I";
else if(a == 19)
return "J";
else
return s1;
}
string twentytrans(int a)
{
int b, c;
b = a%20;
c = a/20;
string result;
if(c == 0)
result = twentysignal(b);
else
result = twentysignal(c) + twentysignal(b);
return result;
}
int main(void)
{
ofstream fout("matrix.txt");
int i, j;
int data[19][19];
memset(data, 0x00, 19*19);
for(i = 0; i < 19; i ++)
{
for(j = 0; j < 19; j ++)
{
data[i][j] = (i + 1) * (j + 1);
//fout.fill('0');
//fout.precision(2);
fout.width(2);
fout << twentytrans(data[i][j]) << " ";
}
fout << endl;
}
fout.close();
return 0;
}
编译后运行:
得出,二十进制的乘法口诀表如下:
1 2 3 4 5 6 7 8 9 A B C D E F G H I J
2 4 6 8 A C E G I 10 12 14 16 18 1A 1C 1E 1G 1I
3 6 9 C F I 11 14 17 1A 1D 1G 1J 22 25 28 2B 2E 2H
4 8 C G 10 14 18 1C 1G 20 24 28 2C 2G 30 34 38 3C 3G
5 A F 10 15 1A 1F 20 25 2A 2F 30 35 3A 3F 40 45 4A 4F
6 C I 14 1A 1G 22 28 2E 30 36 3C 3I 44 4A 4G 52 58 5E
7 E 11 18 1F 22 29 2G 33 3A 3H 44 4B 4I 55 5C 5J 66 6D
8 G 14 1C 20 28 2G 34 3C 40 48 4G 54 5C 60 68 6G 74 7C
9 I 17 1G 25 2E 33 3C 41 4A 4J 58 5H 66 6F 74 7D 82 8B
A 10 1A 20 2A 30 3A 40 4A 50 5A 60 6A 70 7A 80 8A 90 9A
B 12 1D 24 2F 36 3H 48 4J 5A 61 6C 73 7E 85 8G 97 9I A9
C 14 1G 28 30 3C 44 4G 58 60 6C 74 7G 88 90 9C A4 AG B8
D 16 1J 2C 35 3I 4B 54 5H 6A 73 7G 89 92 9F A8 B1 BE C7
E 18 22 2G 3A 44 4I 5C 66 70 7E 88 92 9G AA B4 BI CC D6
F 1A 25 30 3F 4A 55 60 6F 7A 85 90 9F AA B5 C0 CF DA E5
G 1C 28 34 40 4G 5C 68 74 80 8G 9C A8 B4 C0 CG DC E8 F4
H 1E 2B 38 45 52 5J 6G 7D 8A 97 A4 B1 BI CF DC E9 F6 G3
I 1G 2E 3C 4A 58 66 74 82 90 9I AG BE CC DA E8 F6 G4 H2
J 1I 2H 3G 4F 5E 6D 7C 8B 9A A9 B8 C7 D6 E5 F4 G3 H2 I1
总结
为了使用二十进制,我们需要再对“A,B,C,D,E,F,G,H,I,J”共十个符号进行命名并且记住,这还不够,我们还需要对20个20,20个20个20,等等整数单位进行命名,何其麻烦。