数论

Posted 邪童的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数论相关的知识,希望对你有一定的参考价值。

数论知识, 包括判定质数, 求解约数, 欧几里得算法, 求解欧拉函数, 快速幂, 扩展欧几里得算法

质数

在大于1的整数中, 如果只包含1和本身这两个约数, 就被称为质数, 或者叫质数


(1)质数的判定——试除法
//试除法判定质数模板
bool is_prime(int x)

    if(x<2)return false;
    for(int i=2;i<=x/i;i++)
        if(x%i==0)return false;
    return true;

注意:循环的结束条件为 i<=x/i ,若改为 i*i<=x 在x接近int上界时会有溢出风险

(2)分解质因数——试除法
//试除法分解质因数模板
void divide(int x)

    for(int i=2;i<=x/i;i++)
        if(x%i==0)
        
            int s=0;
            while(x%i==0)
            
                s++;
                x/=i;
            
            cout<<i<<\' \'<<s<<\'\\n\';
        
    if(x>1)cout<<x<<\' \'<<1<<\'\\n\';
    //n中最多只含一个大于sqrt(n)的质因子


(3)质数的判定——埃氏筛法
//朴素筛法求素数模板

int primes[N],cnt;	//primes[]存储所有的素数
bool st[N];		//st[]存储x是否被筛掉

void get_primes(int n)

    for(int i=2;i<=n;i++)
    
        if(st[i])continue;
        primes[cnt++]=i;
        for(int j=i+i;j<=n;j+=i)
            st[j]=true;
    


(4)质数的判定——线性筛法
//线性筛法求素数模板

int primes[N],cnt;	//primes[]存储所有的素数
bool st[N];		//st[x]存储x是否被筛掉

void get_primes(int n)

    for(int i=2;i<=n;i++)
    
        if(!st[j])primes[cnt++]=i;
        for(int j=0;primes[j]<=n/i;j++)
        
            st[primes[j]*i]=true;
            if(i%primes[j]==0)break;
            //primes[j]一定是i的最小质因子
        
    




约数

(1)试除法求一个数的所有约数
//试除法求所有的约数模板
vector<int> get_divisors (int x)

    vector<int>res;
    for(int i=1;i<=x/i;i++)
        if(x%i==0)
        
            res.push_back(i);
            if(i!=x/i)res.push_back(x/i);
        
    sort(res.begin(),res.end());
    return res;


(2)约数个数
(3)约数之和

如果 N = \\(p^c_1_1\\) × \\(p1^c_2_2\\) × \\(\\cdots\\) × \\(p^c_k_k\\)

约数个数: (\\(c_1\\) + 1) × (\\(c_2\\) + 1) × \\(\\cdots\\) × (\\(c_k\\) + 1)

约数之和: (\\(p^0_1\\) + \\(p^1_1\\) + \\(p^2_1\\) + \\(\\cdots\\) + \\(p^c_1_1\\)) × (\\(p^0_2\\) + \\(p^1_2\\) + \\(p^2_2\\) + \\(\\cdots\\) + \\(p^c_2_2\\)) × \\(\\cdots\\) × (\\(p^0_k\\) + \\(p^1_k\\) + \\(\\cdots\\) + \\(p^c_k_k\\) )


//求约数个数模板

unordered_map<int,int>primes;

while(n--)

    int x;
    cin>>x;
    
    for(int i=2;i<=x/i;i++)
        while(x%i==0)
        
            x/=i;
            primes[i]++;
        
    if(x>1)primes[x]++;

long long res=1;
for(auto p:primes)res=res*(p.second+1)%mod;

//求约数之和模板

unordered_map<int,int>primes;

while(n--)

    int x;
    cin>>x;
    
    for(int i=2;i<=x/i;i++)
        while(x%i==0)
        
            x/=i;
            primes[i]++;
        
    if(x>1)primes[x]++;


long long res=1;
for(auto p:primes)

    long long a=p.first,b=p.second;
    long long t=1;
    while(b--)t=(t*a+1)%mod;
    res=res*t%mod;


(4)欧几里得算法(辗转相除法)

原理: d 能整除 a , d 能整除 b \\(\\longrightarrow\\) 则 d 能整除 ax+by

  • a % b = a - [ \\(\\dfracab\\) ] × b = a - c × b

  • a 和 b的最大公约数

    = b 和 a - c × b 的最大公约数

    = b 和 a % b 的最大公约数


//欧几里得算法
int gcd(int a,int b)

    return b?gcd(b,a%b):a;




欧拉函数

欧拉函数 \\(\\varphi\\) (n) 1 ~ n 中与n互质的数的个数

如果 N = \\(p^\\alpha_1_1\\) × \\(p^\\alpha_2_2\\) × \\(\\cdots\\) × \\(p^\\alpha_k_k\\)

\\(\\varphi\\) (N) = N × (1 - \\(\\dfrac1p_1\\)) × (1 - \\(\\dfrac1p_2\\)) × \\(\\cdots\\) × (1 - \\(\\dfrac1p_k\\))


//公式法求欧拉函数模板
int phi(int x)

    int res=x;
    for(int i=2;i<=x/i;i++)
        if(x%i==0)
        
            res=res/i*(i-1);
            while(x%i==0)x/=i;
        
    if(x>1)res=res/x*(x-1);
    
    return res;


//筛法求欧拉函数模板

int primes[N],cnt;		//primes[]存储所有的素数
int euler[N];			//存储每个数的欧拉函数
bool st[N];			//st[x]存储x是否被筛掉

void get_eulers(int n)

    eular[1]=1;
    for(int i=2;i<=n;i++)
    
        if(!st[i])
        
            primes[cnt++]=i;
            euler[i]=i-1;
        
        for(int j=0;primes[j]<=n/i;j++)
        
            int t=primes[j]*i;
            st[t]=true;
            if(i%primes[j]==0)
            
                euler[t]=euler[i]*primes[j];
                break;
            
            euler[t]=euler[i]*(primes[j]-1);
        
    


欧拉定理: 若 a 与 n 互质, 则 \\(a^\\varphi~(n)~\\) % n = 1

费马定理: 若 a 与 p 互质, p为质数, 则 \\(a^p-1\\) % p = 1




快速幂

快速幂: 用 O(log2k)时间计算出 \\(a^k\\) mod p

算法原理: 先预处理出

\\[\\begincases a^2^0 \\text mod p\\\\[0.3ex] a^2^1 \\text mod p \\quad\\quad\\quad\\quad \\text$a^2^1$ = $a^2^0*2$ = $(a^2^0)^2$\\\\[0.3ex] a^2^2 \\text mod p \\quad\\quad\\quad\\quad \\text$a^2^2$ = $a^2^1*2$ = $(a^2^1)^2$\\\\[0.3ex] \\quad\\quad \\cdots \\\\[0.3ex] a^2^log_2k \\text mod p \\quad\\quad\\quad \\text$a^2^log_2k$ = $(a^2^log_2k-1)^2$\\\\[0.3ex] \\endcases \\]

\\(a^k\\) = \\(a^2^x_1\\) * \\(a^2^x_2\\) \\(\\cdots\\) \\(a^2^x_t\\)

​ = \\(a^2^x_1+2^x_2+2^x_3+\\cdots+2^x_t\\)


//快速幂模板
//求 (m^k)%p

int qmi(int m,int k,int p)

    int res=1%p,t=m;
    while(k)
    
        if(k&1)res=res*t%p;
        t=t*t%p;
        k>>=1;
    
    return res;




扩展欧几里得算法

裴蜀定理: 对于任意正整数a, b, 一定存在非零整数x, y, 使得 ax + by = gcd (a, b)


//扩展欧几里得算法模板
//求x,y,使得ax+by=gcd(x,y)

int exgcd(int a,int b,int &x,int &y)

    if(b==0)
    
        x=1,y=0;
        return a;
    
    
    int d=exgcd(b,a%b,y,x);
    y-=(a/b)*x;
    return d;



常用初等数论小知识

参考技术A 1.求有关初等数论的所有知识```
初等数论 研究数的规律,特别是整数性质的数学分支。

是数论的一个最古老的分支。它以算术方法为主要研究方法,主要内容有整数的整除理论、不定方程、同余式等。

古希腊毕达哥拉斯是初等数论的先驱。他与他的学派致力于一些特殊整数(如亲和数、完全数、多边形数)及特殊不定方程的研究。

公元前4世纪,欧几里德的《几何原本》通过102个命题,初步建立了整数的整除理论。他关于“素数有无穷多个”的证明,被认为是数学证明的典范。

公元3世纪,丢番图研究了若干不定方程,并分别设计巧妙解法,故后人称不定方程为丢番图方程。17世纪以来,P.de费马、L.欧拉、C.F.高斯 等人的工作大大丰富和发展了初等数论的内容。

中国古代对初等数论的研究有着光辉的成就,《周髀算经》、《孙子算经》、《张邱建算经》、《数书九章》等古文献上都有记载。孙子定理比欧洲早500年, 西方常称此定理为中国剩余定理,秦九韶的大衍求一术也驰名世界。

初等数论不仅是研究纯数学的基础,也是许多学科的重要工具。它的应用是多方面的,如计算机科学、组合数学、密码学、信息论等。

如公开密钥体制的提出是数论在密码学中的重要应用。 初等数论就是用初等、朴素的方法去研究数论。

另外还有解析数论(用解析的方法研究数论。)、代数数论(用代数结构的方法研究数论)。

素数 数论刚开始的时候是用朴素的推理方法去研究整数的性质,又以素数最令人神往。古今不知道多少数学家都为了它而呕心沥血!研究素数的性质是数论中一个非常重要的方面! 所谓素数,就是一个正整数,它除了本身和 1 以外并没有任何其他因子。

素数就好象是正整数的原子一样,著名的高斯「唯一分解定理」说,任何一个整数。可以写成一串质数相乘的积。

但是至今仍然没有一个一般的特别使用的式子可以表示所有的素数。所以数论里关于素数的两个著名猜想非常困难:1哥德巴赫猜想 :(Goldbach Conjecture) 内容为“所有的大于2的偶数,都可以表示为两个素数” 这个问题是德国数学家哥德巴赫(C.Goldbach,1690-1764)于1742年6月7日在给大数学家欧拉的信中提出的,所以被称作哥德巴赫猜想。

同年6月30日,欧拉在回信中认为这个猜想可能是真的,但他无法证明。从此,这道数学难题引起了几乎所有数学家的注意。

哥德巴赫猜想由此成为数学皇冠上一颗可望不可即的“明珠”。“用当代语言来叙述,哥德巴赫猜想有两个内容,第一部分叫做奇数的猜想,第二部分叫做偶数的猜想。

奇数的猜想指出,任何一个大于等于7的奇数都是三个素数的和。偶数的猜想是说,大于等于4的偶数一定是两个素数的和。”

(引自《哥德巴赫猜想与潘承洞》) 哥德巴赫猜想貌似简单,要证明它却着实不易,成为数学中一个著名的难题。18、19世纪,所有的数论专家对这个猜想的证明都没有作出实质性的推进,直到 20世纪才有所突破。

直接证明哥德巴赫猜想不行,人们采取了“迂回战术”,就是先考虑把偶数表为两数之和,而每一个数又是若干素数之积。如果把命题"每一个大偶数可以表示成为一个素因子个数不超过a个的数与另一个素因子不超过b个的数之和"记作"a+b",那么哥氏猜想就是要证明"1+1"成立。

1900年,20世纪最伟大的数学家希尔伯特,在国际数学会议上把“哥德巴赫猜想”列为23个数学难题之一。此后,20世纪的数学家们在世界范围内“联手”进攻“哥德巴赫猜想”堡垒,终于取得了辉煌的成果。

到了20世纪20年代,有人开始向它靠近。1920年,挪威数学家布爵用一种古老的筛选法证明,得出了一个结论:每一个比6大的偶数都可以表示为(9+ 9)。

这种缩小包围圈的办法很管用,科学家们于是从(9十9)开始,逐步减少每个数里所含质数因子的个数,直到最后使每个数里都是一个质数为止,这样就证明了“哥德巴赫猜想”。 1920年,挪威的布朗(Brun)证明了 “9+9 ”。

1924年,德国的拉特马赫(Rademacher)证明了“7+7 ”。 1932年,英国的埃斯特曼(Estermann)证明了 “6+6 ”。

1937年,意大利的蕾西(Ricei)先后证明了“5+7 ”, “4+9 ”, “3+15 ”和“2+366 ”。 1938年,苏联的布赫 夕太勃(Byxwrao)证明了“5+5 ”。

1940年,苏联的布赫 夕太勃(Byxwrao)证明了 “4+4 ”。 1948年,匈牙利的瑞尼(Renyi)证明了“1+c ”,其中c是一很大的自然数。

1956年,中国的王元证明了 “3+4 ”。 1957年,中国的王元先后证明了 “3+3 ”和 “2+3 ”。

1962年,中国的潘承洞和苏联的巴尔巴恩(BapoaH)证明了 “1+5 ”, 中国的王元证明了“1+4 ”。 1965年,苏联的布赫 夕太勃(Byxwrao)和小维诺格拉多夫(BHHopappB),及 意大利的朋比利(Bombieri)证明了“1+3 ”。

1966年,中国的陈景润证明了 “1+2 ”[用通俗的话说,就是大偶数=素数+素数*素数或大偶数=素数+素数(注:组成大偶数的素数不可能是偶素数,只能是奇素数。因为在素数中只有一个偶素数,那就是2。)

]。 其中“s + t ”问题是指: s个质数的乘积 与t个质数的乘积之和 20世纪的数学家们研究哥德巴赫猜想所采用的主要方法,是筛法、圆法、密率法和三角和。
2.关于数论的一些基础知识
如果只是限定在初等数论中,那么初等数论的研究对象就比较窄,一般就是整数,甚至是自然数。高级一点的研究连分数就突破这方面的限制。

从原则上来讲,初等数论是研究负整数的,比如丢番图方程。而如果只讲最基础的整除、素数,研究自然数就够了。

初等数论最基本的工具是整除和同余,整除就是6除以2是整数,就说6能被2整除;6除以4是分数,就说6不能被2整除。同余就是两个数用同一个数(称为模)去除,看是否得到一样的余数。比如对于模7,2和9同余,3和6不同余。

附带的概念包括最大公约数等等,欧几里德算法是求最大公约数的基本方法。

向较高方向发展可以包括,原根、二次剩余、Pell方程、数论函数、素数分布、图形格点等等。总之,初等数论所用的工具不会超过初等分析。
3.初等数论怎么学习
初等数论也称整数论,主要研究整数的性质和方程的整数解,是一门非常重要的数学基础理论分支.由于初等数论中的问题简明易懂,所以它比任何其它的数学分支更能引起人们的注意.近代数学中许多重要的思想、概念、方法和技巧都是从对整数性质的深入研究而不断丰富和发展起来的. 本课程3学分,学时为54。

本课程共分5章,分别介绍了整除理论、不定方程、同余理论和连分数,重点讲解了整数的整除性、不定方程、一元同余理论、平方剩余等四个模块。本课程的主要任务是一方面使学生加深对整数及其性质的理解,另一方面使学生能够掌握基本的初等数论的研究方法和技巧,有利于学生更好地进行初等数学的教学。

本课程的文字教材根据知识点的难易程度配备了一系列例题和练习题,还编制了20学时的IP课件供学生在网上学习,并编制了一系列网上辅导练习题. 整数的整除性模块要求掌握整数的整除、公因子、素数的概念及性质,熟练运用辗转相除法求两个整数的最大公因子,最小公倍数,深入理解剩余定理和算术基本定理.会用筛法求简单的素数表;会利用抽屉原理证明一些有关整数是某个特定整数的倍数的简单问题. 不定方程模块要求牢记二元一次不定方程有整数解的条件,二元一次不定方程整数解的形式,熟练掌握利用剩余定理(辗转相除法)求二元一次不定方程整数解的方法;知道多元一次不定方程有解的条件,会求解简单的多元(三元)一次不定方程的整数解;知道不定方程 的整数解的形式,会求形如 的整数解,并且能够证明一些简单的有关问题. 一元同余理论模块要求会利用同余的性质,简单验证整数乘积运算的结果;熟练掌握判断剩余系的方法,理解欧拉函数的定义及性质;了解欧拉定理、Fermat小定理,掌握循环小数的判定方法;掌握一次同余式有解的条件,熟练掌握求解一次同余式;掌握中国剩余定理的简单应用,掌握求解简单同余式方程组的方法;了解高次同余式解的个数的判断方法,知道解高次同余式的方法,了解模整数同余式与模素数同余式的关系,掌握求简单的(3、4次)同余式解的方法. 平方剩余模块要求理解二次同余式的一般形式、模整数同余与模素数幂同余的关系、平方剩余与平方非剩余的概念;理解单素数的平方剩余与平方非剩余的欧拉判定法,了解单素数的平方剩余与平方非剩余的个数;了解Legendre符号的定义、性质及Jacobi符号的定义、性质,熟练掌握利用Legendre和Jacobi符号判断同余式的解的存在性;掌握非素数模的二次同余式有解的条件及解的个数的有关结论;会对素数p讨论不定方程 有整数解的条件;掌握求原根的简单方法;会利用原根得到整数简化剩余系的方法;掌握指标的应用(讨论同余式有解的条件及解的个数). 在许多数论问题的研究方面,我国都处于领先地位,如老一辈著名数学家华罗庚、柯召、闵嗣鹤等都曾取得过辉煌的成就,特别是华罗庚教授在解析数论方面的成果是举世公认的.60年代后,著名数学家陈景润、王元、潘承洞等在Goldbach猜想等问题上也取得了国际领先的成果. 怎样才能学好本课程?我们唯一的建议是去做,去实践.学习初等数论就像学习一门新的实践和实用技术课程一样,必须多练习,最好是一节一练,甚至是一定理(或一例题)一练习,如遇不懂之处,可反复看书或反复看举例题或反复做配套练习题,或许您会豁然开朗。学好本课程对有否本专业知识背景要求不高,只要你能花时间认真去学,有些公式需要去记去背,并会灵活应用,抓住关键点。

学习一门课程还需要有一定的技巧,学会分类和概括,抓住关节点,不知不觉就激起了您对学习和探讨本课程的兴趣和积极性,学起来就更加得心应手.。
4.初等数论的初等数论内容
初等数论有以下几部分内容:

1.整除理论。引入整除、因数、倍数、质数与合数等基本概念。这一理论的主要成果有:唯一分解定理、裴蜀定理、欧几里德的辗转相除法、算术基本定理、素数个数无限证明。

2.同余理论。主要出自于高斯的《算术研究》内容。定义了同余、原根、指数、平方剩余、同余方程等概念。主要成果:二次互反律、欧拉定理、费马小定理、威尔逊定理、孙子定理(即中国剩余定理)等等。

3.连分数理论。引入了连分数概念和算法等等。特别是研究了整数平方根的连分数展开。主要成果:循环连分数展开、最佳逼近问题、佩尔方程求解。

4.不定方程。主要研究了低次代数曲线对应的不定方程,比如勾股方程的商高定理、佩尔方程的连分数求解。也包括了四次费马方程的求解问题等等。

5.数论函数。比如欧拉函数、莫比乌斯变换等等。

6.高斯函数。 第一个层次叫做数学概念,是反映对象的本质属性的思维形式。人类在认识过程中,从感性认识上升到理性认识,把所感知的事物的共同本质特点抽象出来,加以概括,就成为概念。表达概念的语言形式是词或词组。科学概念,特别是数学概念要求更加严格,至少必须具备三个条件:专一性,精确性,可以检验。例如:”孪生素数“就是一个数学概念。

第二个层次叫做数学命题,数学命题是对一系列数学概念之间的关系作出判断的句子。一个命题要么真,要么不真(这由逻辑中的排中律保证)。真命题包含定理,引理,推论,事实等。命题既可以是存在性命题(表述为”存在。。."),也可以是全称命题(表述为“对于一切。..")。 第三个层次叫做数学理论,把方法,公式,公理,定理,原理,组合成为一个体系叫做数学理论。例如“初等数论”,由公理(例如等量公理),定理(例如费马小定理),原理(例如抽屉原理,一一对应原理),公式等组成。 在数学证明时,全称命题常常不能通过枚举法来判断真伪,这是因为数学有时面对的是无穷多个对象,永远不可能一一枚举出每一种情况。不完全归纳法在数学中是不可行的,数学只承认演绎逻辑(数学归纳法,超限归纳法等均属于演绎逻辑)。
5.【求初等数论的基本概念,基本理论和定理等,越全越好,】
第一章 有关数论的算法1.1 最大公约数与最小公倍数1.2 有关素数的算法1.3 方程ax+by=c的整数解及应用1.4 求a^b mod n1.1最大公约数与最小公倍数 1.算法1:欧几里德算法求a,b的最大公约数 function gcd(a,b:longint):longint;beginif b=0 then gcdd:=aelse gcd:=gcd(b,a mod b);end;2.算法2:最小公倍数acm=a*b div gcd(a,b);3.算法3:扩展的欧几里德算法,求出gcd(a,b)和满足gcd(a,b)=ax+by的整数x和y function exgcd(a,b:longint;var x,y:longint):longint;vart:longint;beginif b=0 then beginresult:=a;x:=1;y:=0;endelsebeginresult:=exgcd(b,a mod b,x,y);t:=x;x:=y;y:=t-(a div b)*y;end;end;(理论依据:gcd(a,b)=ax+by=bx1+(a mod b)y1=bx1+(a-(a div b)*b)y1=ay1+b(x1-(a div b)*y1))1.2有关素数的算法1.算法4:求前n个素数:program BasicMath_Prime;constmaxn=1000;varpnum,n:longint; p:array[1..maxn] of longint;function IsPrime(x:longint):boolean;var i:integer;beginfor i:=1 to pnum doif sqr(p[i])0),现c筒装满水,问能否在c筒个量出d升水(c>d>0).若能,请列出一种方案.算法分析:量水过程实际上就是倒来倒去,每次倒的时候总有如下几个持点:1.总有一个筒中的水没有变动;2.不是一个筒被倒满就是另一个筒被倒光;3.c筒仅起中转作用,而本身容积除了必须足够装下a简和b简的全部水外,别无其它限制.程序如下:program mw;typenode=array[0..1] of longint;vara,b,c:node;d,step,x,y:longint;function exgcd(a,b:longint;var x,y:longint):longint;var t:longint;beginif b=0 thenbeginexgcd:=a;;x:=1;y:=0;endelsebeginexgcd:=exgcd(b,a mod b,x,y);t:=x;x:=y;y:=t-(a div b)*yend;end;procedure equation(a,b,c:longint;var x0,y0:longint);var d,x,y:longint;begind:=exgcd(a,b,x,y);if c mod d>0 thenbeginwriteln('no answer');halt;end elsebeginx0:=x*(c div d);y0:=y*(c div d);end;end;procedure fill(var a,b:node);var t:longint;beginif a[1]0 thenrepeatif a[1]=0 then fill(c,a) elseif b[1]=b[0] then fill(b,c) else fill(a,b);inc(step);writeln(step:5,':',a[1]:5,b[1]:5,c[1]:5);until c[1]=delserepeatif b[1]=0 then fill(c,b) elseif a[1]=a[0] then fill(a,c) else fill(b,a);inc(step);writeln(step:5,':',a[1]:5,b[1]:5,c[1]:5);until c[1]=d;end.1.4 求a^b mod n 1.算法8:直接叠代法求a^b mod n function f(a,b,n:longint):longint; var d,i:longint; begin d:=a; for i:=2 to b do d:=d mod n*a; d:=d mod n; f:=d; end; 2.算法9:加速叠代法 function f(a,b,n:longint):longint; var d,t:longint; begin d:=1;t:=a; while b>0 do begin if t=1 then begin f:=d;exit end ; if b mod 2 =1 then d:=d*t mod n; b:=b div 2; t:=t*t mod n; end; f:=d end; 练习:1.熟记并默写以上算法.。
6.数学小知识
1、在生活中,我们经常会用到0、1、2、3、4、5、6、7、8、9这些数字。

那么你知道这些数字是谁发明的吗? 这些数字符号原来是古代印度人发明的,后来传到 *** ,又从 *** 传到欧洲,欧洲人误以为是 *** 人发明的,就把它们叫做“ *** 数字”,因为流传了许多年,人们叫得顺口,所以至今人们仍然将错就错,把这些古代印度人发明的数字符号叫做 *** 数字。 现在, *** 数字已成了全世界通用的数字符号。

2、九九歌就是我们现在使用的乘法口诀。 远在公元前的春秋战国时代,九九歌就已经被人们广泛使用。

在当时的许多著作中,都有关于九九歌的记载。最初的九九歌是从“九九八十一”起到“二二得四”止,共36句。

因为是从“九九八十一”开始,所以取名九九歌。大约在公元五至十世纪间,九九歌才扩充到“一一得一”。

大约在公元十三、十四世纪,九九歌的顺序才变成和现在所用的一样,从“一一得一”起到“九九八十一”止。 现在我国使用的乘法口诀有两种,一种是45句的,通常称为“小九九”;还有一种是81句的,通常称为“大九九”。

3、圆形,是一个看来简单,实际上是很奇妙的圆形。 古代人最早是从太阳,从阴历十五的月亮得到圆的概念的。

就是现在也还用日、月来形容一些圆的东西,如月门、月琴、日月贝、太阳珊瑚等等。 是什么人作出第一个圆呢? 十几万年前的古人作的石球已经相当圆了。

前面说过,一万八千年前的山顶洞人曾经在兽牙、砾石和石珠上钻孔,那些孔有的就很圆。 山顶洞人是用一种尖状器转着钻孔的,一面钻不透,再从另一面钻。

石器的尖是圆心,它的宽度的一半就是半径,一圈圈地转就可以钻出一个圆的孔。 以后到了陶器时代,许多陶器都是圆的。

圆的陶器是将泥土放在一个转盘上制成的。 当人们开始纺线,又制出了圆形的石纺缍或陶纺缍。

6000年前的半坡人(在西安)会建造圆形的房子,面积有十多平方米。 古代人还发现圆的木头滚着走比较省劲。

后来他们在搬运重物的时候,就把几段圆木垫在大树、大石头下面滚着走,这样当然比扛着走省劲得多。当然了,因为圆木不是固定在重物下面的,走一段,还得把后面滚出来的圆木滚到前面去,垫在重物前面部分的下方。

大约在6000年前,美索不达米亚人,做出了世界上第一个轮子--圆的木盘。 大约在4000多年前,人们将圆的木盘固定在木架下,这就成了最初的车子。

因为轮子的圆心是固定在一根轴上的,而圆心到圆周总是等长的,所以只要道路平坦,车子就可以平衡地前进了。 会作圆,但不一定就懂得圆的性质。

古代埃及人就认为:圆,是神赐给人的神圣图形。一直到两千多年前我国的墨子(约公元前468-前376年)才给圆下了一个定义:"一中同长也"。

意思是说:圆有一个圆心,圆心到圆周的长都相等。这个定义比希腊数学家欧几里得(约公元前330-前275年)给圆下定义要早100年。

圆周率,也就是圆周与直径的比值,是一个非常奇特的数。 《周髀算经》上说"径一周三",把圆周率看成3,这只是一个近似值。

美索不达来亚人在作第一个轮子的时候,也只知道圆周率是3。 魏晋时期的刘徽于公元263年给《九章算术》作注。

他发现"径一周三"只是圆内接正六边形周长和直径的比值。他创立了割圆术,认为圆内接正多连形边数无限增加时,周长就越逼近圆周长。

他算到圆内接正3072边形的圆周率,π= 3927/1250,请你将它换算成小数,看约等于多少? 刘徽已经把极限的概念运用于解决实际的数学问题之中,这在世界数学史上也是一项重大的成就。 祖冲之(公元429-500年)在前人的计算基础上继续推算,求出圆周率在3.1415926与3.1415927之间是世界上最早的七位小数精确值,他还用两个分数值来表示圆周率:22/7称为约率,355/113称为密率。

请你将这两个分数换成小数,看它们与今天已知的圆周率有几位小数数字相同? 在欧洲,直到1000年后的十六世纪,德国人鄂图(公元1573年)和安托尼兹才得到这个数值。 现在有了电子计算机,圆周率已经算到了小数点后一千万以上了。

4、数学除了记数以外,还需要一套数学符号来表示数和数、数和形的相互关系。 数学符号的发明和使用比数字晚,但是数量多得多。

现在常用的有200多个,初中数学书里就不下20多种。它们都有一段有趣的经历。

例如加号曾经有好几种,现在通用"+"号。 "+"号是由拉丁文"et"("和"的意思)演变而来的。

十六世纪,意大利科学家塔塔里亚用意大利文"più"(加的意思)的第一个字母表示加,草为"μ"最后都变成了"+"号。 "-"号是从拉丁文"minus"("减"的意思)演变来的,简写m,再省略掉字母,就成了"-"了。

也有人说,卖酒的商人用"-"表示酒桶里的酒卖了多少。以后,当把新酒灌入大桶的时候,就在"-"上加一竖,意思是把原线条勾销,这样就成了个"+"号。

到了十五世纪,德国数学家魏德美正式确定:"+"用作加号,"-"用作减号。 乘号曾经用过十几种,现在通用两种。

一个是"*",最早是英国数学家奥屈特1631年提出的;一个是"· ",最早是英国数学家赫锐奥特首创的。德国数学家莱布尼茨认为:"*"。

以上是关于数论的主要内容,如果未能解决你的问题,请参考以下文章

小升初数学数论知识归纳总结

数论总结1(基础数论)

数论函数相关知识

数论&数学

数论分块 数学

数论函数 Dirichlet 积及其应用