我们以为我们绝对了解的东西,往往不是那么绝对。
今天突然想起自然数的定义--当然,在小学的时候我们就知道自然数是[1,2,3……],按照我的老师的说法,就是可以用1作为单位,1个1个累计起来的数。不管是当时数手指,还是日常生活的经验,我都确信无疑。
不过现在的数学教材中,N(自然数集)是包括0的。有人用计算机二进制中只有01来说明0是自然数,也有人说GB规定之类的,还有人说是国际标准或西方都是这样,不过数学作为一个严谨的学科,人为的规定和直觉是很难说服人的,用国际惯例之类的也不好使,因为一直以来,我所得到的教育就是1是抽象出来的自然数的基础,其他自然数都是1加出来的,由此扩展出四则运算等。在网上看了一圈,包括一些数学家在内都认为0作为自然数是不合适的(潘承洞、潘承彪写的初等数论)。
下面是网上的讨论:
http://www.stjjw.com/club/3036.html 写道
数学是一门抽象的独立学科,其基本定义只有一个抽象的运算方法“加法”,和一
个抽象的运算元素“1”,它的一切理论都由这两个基本定义导出。它可广泛地用于实践中各个领域,但不允许用实践中具体的事物来定义它的概念或证明它的结论。你可以用自然数去数苹果,但不得用苹果定义自然数;你可用勾股弦定理计算三角形的边长,但不能用测量三角形的边长证明勾股弦定理。它只能用它自身完整严密的逻辑推理来定义和证明它自身,而且他的定义和定理要求绝对准确,,不允许随意"规定"。
通过加法逆运算定义了减法,若干数自加定义乘法,乘法逆运算定义除法,依此类推,定义更复杂的运算方法乘方、开方、对数……。
2=1+1 3=2+1=1+1+1 ……依此类推,定义全部自然数,所以自然数的精确定义是1
相加的和。0=1-1 -n=0-n .定义了0和负整数.,而正整数是大减小的特例,所以整数是自然数相减的差,同理,有理数是整数相除的商。.依此类推,定义实数、复数……。
乘法定义于自然数,非自然数相乘,就必须加以证明。为什么(-1)*(-1)=1? 绝大
多数人会说:“这是规定”,事实上,(-1)*0=0 (-1)*(1-1)=0 (-1)*[1+(-1)]=0
-1+(-1)*(-1)=0 所以 (-1)*(-1)=1。.那么0为什么不是自然数?也会有人说“:这是规定”,事实上,因为0不是1相加的和,所以0不是自然数。正是由于人们把绝对的数学结论,错误地看作是随意“规定”,才引起0是否自然数的无端争论。
有人用集合理论定义0是自然数,但他却忘记关键的一点,数学中的概念,必许是先定义后引用,而不是相反。然而集合中的元素却引用了尚未定义的自然数,况且集合是通过定义其中元素来定义的,也不是相反。如果用集合[0,1,2……]定义自然数,那么请问:“……”是什么?当然是自然数?自然数又是什么?虽然集合可用枚举来定义,但只限于有限集合。
有人用“世界多数国家规定”和“国家标准规定”来解释,那么哥德巴赫猜想是否可通过权威部门规定来证明。有人认为:实际应用中计算机编码从0开始,0应该定义为自然数。那么,实际应用中圆周率只使用有限位小数,π就应该定义为有理数。
如果把0作为基本运算元素,0+0=0 数学系统就会陷入永远的死循环。那么,0是否可以和1同时定义为基本运算元素呢?这不符合数学原始定义最少的原则,几何学定义基本元素是一抽象的点,线是点移动的轨迹,面是线移动的轨迹……;逻辑运算只有两元素:[1,0],而0是的1的“非”;即使可以对此原则不理会,那么,1-1=0 就必须通过证明,偶数定义2n 就包括0,奇数2n-1 就包括(-1),o是素数还是合数? n!=0*1*2*3*……*n≡0 永远等于0,自然对数底e=lim(1+1/1!+1/2!+1/3!+……+1/n!)=1+1/0*∝ 出现0除……。系统陷入瘫痪。所以把0定义为自然数是绝对错误的。
我个人认为自然数的确不应该有0:
1、自然数是人们对自然的最直接的数的认识,0的出现远远落后于自然数产生的时代。
2、争议会产生,原因在于对自然数本身一直没有严格的定义,因此,谁最早给出一个普遍认可的定义,自然数的体系就应该统一下来避免混乱。做这个工作的是皮亚诺:
参见皮亚诺公理
比较郁闷的是,这个公理本身就有不同的版本,不过没有0的版本更早出现,更接近于真实。
3、所以我认为,我们不妨把不包含0的自然数集N*称为自然数,而把包含0的自然数集N称为扩展自然数集合。
分享到:
相关推荐
通过对本题的分析与解决,我们可以了解到几种不同的查找方法及其适用场景。在实际应用中,应根据具体的数据特点选择合适的算法以达到最优效果。对于本题来说,由于数据量适中且不相同数字数量有限,采用排序+二分...
这个递推关系可以表示为Sn(α) = Sn-1(α) + n^α,当n>=1时,且对于n=0,有Sn(α)=0。利用这一递推关系,我们可以构建一个形式幂级数,进一步求解出幂和的表达式。 形式幂级数是一种形式上无限的级数,其中包含了...
自然数作为基础数学概念,其发展历程反映了人类文明的进步和数学的发展。自然数的起源可以追溯到人类早期的数数行为,随着文明的发展,...因此,了解自然数的历史和原理,对于深入理解计算机科学和数学都是非常有益的。
例如,在Purescript中,可以定义一个类型代数数据类型来表示自然数,如`data Nat = Z | S Nat`,其中`Z`代表0,`S`是前一个自然数的后继。这种表示法允许我们在编译时进行数学运算和类型检查,例如,确保函数接受的...
在编程领域,计算自然数序列的和是一项基础且常见的任务,尤其在学习编程语言时,如Java。这个任务要求我们编写一个程序,能够接收两个自然数n和m(n ),并计算从n到m所有自然数的和。在这个过程中,我们可以运用...
本文将深入探讨如何使用C++语言进行自然数间的进制转换,这对于任何想要学习编程的人来说都是一个很好的起点。在C++中,我们可以通过自定义函数实现不同进制之间的转换,如二进制、八进制、十进制和十六进制。 首先...
这个场景常出现在数据结构与算法的学习中,特别是关于查找、排序或统计的练习。 描述中提到的“NULL”表明没有额外的上下文信息,因此我们需要根据标题提供的信息进行分析。这个问题可能要求我们执行以下几种操作之...
自然数对,通常指的是两个正整数(不包括0)的组合。在给定的上下限内,这个程序可能会遍历所有的整数对,并检查它们是否满足特定条件。这可能涉及到数学上的概念,比如配对、序列、或某种特定的数学关系。 易语言...
- **错误处理**:实际应用中需要考虑输入数据的有效性验证,例如检查输入是否为正整数等。 - **性能优化**:对于大数据量的情况,可以考虑使用并行处理或分治算法等方法提高程序执行效率。 综上所述,解决此类问题...
例如,要生成从0到54(包含0和54)的自然数序列,我们可以使用`a = np.arange(0, 55)`,这将生成一个长度为55的一维数组。 在R语言中,可以通过设置`array`函数的数据和维度来直接创建指定形状的数组。而在Numpy中...
了解并熟练掌握`while`语句,是每个C#程序员必备的基础技能。 此外,`while`语句还可以与`do...while`语句结合使用,形成更复杂的循环结构。`do...while`语句会先执行一次循环体,然后再检查条件,确保至少执行一次...
(n的阶乘)末尾0的数量,我们需要了解0是如何产生的。在十进制系统中,0是由5和2相乘产生的。由于2的因子在任何连续整数范围内都比5的因子多,所以计算末尾0的数量实质上是计算n!中包含多少个5的因子。 例如,考虑...
首先,让我们了解什么是自然数。自然数是指正整数集合,通常不包括零(1, 2, 3, ...)。不过,在某些上下文中,零也被视为自然数的一部分。在此问题中,我们假设自然数包括1及其以上的所有整数。 下面是如何用...
首先,我们要了解C语言的基本结构,包括变量声明、输入/输出操作以及循环和条件语句。在C语言中,我们通常使用`#include`预处理器指令来引入所需的库,比如`stdio.h`用于标准输入输出操作。 1. **变量声明**: - ...
在`README.txt`文件中,可能会包含有关这个例子的简短说明或代码解释,例如说明计算自然数之和的数学背景,或者提供关于如何运行此程序的指导。 总结一下,这个例子展示了以下几个关键的Java编程知识点: 1. **For...
1. **了解自然数的概念**: - 自然数是一系列按顺序排列的数字,从1开始(有时包括0),例如1、2、3、4等。 - 生活中很多事物都可以用自然数表示,如年龄、日期、数量等。 2. **掌握奇数与偶数的区别**: - **...
这可以通过检查列表中的每个元素是否为整数以及是否大于0来实现。此外,为了使代码更具可读性和模块化,可以将这个功能封装成一个类或模块,便于在其他项目中复用。 通过这个例子,我们可以学习到Python中的数据...