0是自然数吗。困扰多年的疑问

 生活杂谈     |      2019-12-01 22:38
  前几天,Vita哥哥问了一个问题:小数到底是有理数还是无理数?
  这个问题不难回答:无限不循环小数是无理数,其他的小数都是有理数,因为有理数指的是可以写成两个整数之比(分数)的数。
  为了更好地展现“数”的全貌,我翻出了这张经典的图:

0是自然数吗
  数的全貌(来自维基百科)
  这张图很直观地描述了数的概念是如何一步一步扩展的:
  一开始我们有自然数N
  加上负整数之后就是整数Z
  再加上分数之后就是有理数Q
  再加上无理数之后就是实数R
  再加上虚数之后就是复数C
  不过,刚讲到自然数,我就有点吃不准了:0到底是不是自然数?
  我记得我们小时候的数学教材说自然数是不包括0的,但是这张图上自然数是包括0的。我问了一下Vita哥哥学校里现在有没有讲过这个定义?他说还没有。嗯,也对,一年级似乎是不会讲这个的……
  我查了一些新闻资料,2000年之前,我们几乎所有的小学课本里面都说0不是自然数,最小的自然数是1。
  这是《十万个为什么》里面的配图
  所谓“自然数”,就是人类最早计数时使用的数。
  东西是一个一个数的,所以就是1、2、3……至于0,无论是罗马、希腊、埃及、巴比伦,甚至是汉字,在计数时原本都没有0,因为没有东西就说“没有”就好了,人们并不认为这是一个数字。
  到了后来,印度人发明了完整的十进制计数法,就可以写出像10、100这样的数了。尽管这些数里面有0,但是它只不过被当成是一种“占位符”来使用,换句话说,就单独一个0,人们还是没觉得它有什么意义。
  再后来,到公元600多年,印度数学家婆罗摩笈多才真正提出了的0的概念。不过,他之所以需要0,很大程度上是因为他需要把数扩展到负数,一旦扩展到负数,就不得不规定一个0作为正数和负数的分界点。
  0是数轴上正数和负数的分界点
  所以,一直以来,数学家普遍认为,0的必要性是伴随负数才出现的,如果我们只是数东西的个数,不研究负数的话,根本不需要0这个玩意儿,所以最朴素的“自然数”里面不应该包括0——我们这一代人,小时候也都是这样学的,也就是说,最小的自然数是1。
  然而,现在情况又不一样了。
  2000年左右,全国进行过一次教材的修订,绝大部分版本的教材都把0算作自然数了,这个说法一直沿用到现在。例如,人教版《数学》小学四年级上册是这样写的:
  沪教版《数学》五年级下册是这样写的:
  所以,不是我们记错了,也不是我们小时候没学好,而是我们跟娃在这个问题上确实有了“代沟”。
  人类的知识总是在更新的,我们小时候的九大行星现在不是也变成了八大行星。但是数学这个东西一直还是比较稳定的,一般不大会改来改去的,那么0是不是自然数这个问题为什么会改呢?
  其实,长期以来,0是不是自然数这个问题都是有争议的。
  一种观点认为,0作为一个数字来使用,是跟随负数一起出现的,比正整数的使用要晚很多很多,所以0应该跟负整数站一队,而自然数应该只有正整数。
  另一种观点则认为,从本质来看0和正整数更相似,而且在很多领域(如集合、逻辑以及计算机科学等)中,把0和正整数放在一起更方便。举个例子,集合里面0代表空集,一个集合可以是空的(有0个元素),也可以有1个、2个、3个……元素,但不能有负数个元素;在计算机中,0和正整数采用的是同一种表示方法,而表示负整数则需要取反补码(参见【计算机到底怎么表示负数?二进制加法器的最后一课】)。
  Vita哥哥也提供了他的一个观点,他说0和正数一样都可以开平方,而负数则不能开平方,除非借助i(虚数),所以0应该跟正数放在一起。
  哈哈,我觉得他说的很有道理,你们觉得呢?
  这两天他在研究负数开平方的问题……
  (-8两边应该有括号,哈哈)
  一直这么争下去也不是个事儿,特别是随着全球化的发展,什么事儿都得有个标准才行,这就是国际标准化组织(ISO)的工作了。1992年,ISO发布了国际标准ISO 31:1992,其中对数学标志与符号的写法和含义做出了明确的规定。
  在这个标准中,对自然数N的定义是“自然数集,正整数和0的集(the set of natural numbers, the set of positive integers and zero)”,注释中还给出了例子:
  ISO 80000-2:2009中关于自然数N的定义
  (ISO 80000是目前用于代替ISO 31的标准编号)
  既然国际标准都出来了,我们的国家标准也得跟上啊。于是,1993年我们出了个国家标准GB 3102:93,这还是个强制性标准,里面是这么写的:
  GB3102.11-93中关于自然数N的定义
  显然,这个定义就是照搬了ISO,这很正常,与国际接轨嘛。
  既然国标都出来了,我们的小学教材跟国标不一样那好像有点说不过去,于是教材也就跟着国标改成现在这个样子了。
  所以一定要记住,现在你娃学的教材里,0是自然数。如果考试问你“最小的自然数是几?”,记得回答0而不是1哦。
  虽然ISO和国标都有明确的规定,但并不是所有人都熟悉这些标准,所以为了避免歧义,那干脆我们别用“自然数”这个词儿了吧,干嘛非得纠结这个词儿呢?
  如果你不想包括0,那就说“正整数”
  如果你想包括0,那就说“非负整数”
  这样最清楚了,是不是?