初等数论以及欧几里德定理的证明

2023-10-10 02:59

本文主要是介绍初等数论以及欧几里德定理的证明,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

欧几里德定理(无限质数定理)

质数的个数是无限的吗?还是说存在一个最大的质数,比它大的任何数字都可以表示为已有质数的乘积?首先提出这个问题的正式欧几里得本人,他以一种简单而优雅的方式证明了质数有无穷多个,所以并不存在所谓的”最大质数”。为了验证这个命题,我们暂且假设质数的个数是有限的,并用字母N来达标已知最大的质数。现在我们将所有质数相乘,最后再加1,数学表达式如下:

(1\times 2\times3\times5\times 7\times 11\times 13\times \cdots \times N)+1

这个式子得出的结果当然比所谓的“最大质数” N大得多,但是这个数显然不能被任何一个质数(最大到N为止)整除,因为它是用上面这个式子构建出来的。根据这个数学式,我们可以清晰的看到,无论用哪个质数去除它,最后必然得到余数1.因此,我们得到这个数字要么是个质数,要么能被一个大于N的质数整除,无论哪个结果都必将推翻我们最初的假设,即N是最大的质数。

这种证明方法叫做归谬法,它是数学家最爱的工具之一。

基于以上推理,我们可以进行这种构造验证一下,看每次构造出来的数字是否都是质数。

从最初的两个质数开始构造:

p_1=2, p_2=3

根据上面的反证法,已知p_1, p_2, \cdots, p_n,构造出p_{n+1}方法为:

p_{n+1}=p_{1}p_{2}\cdots p_{n}+1

所以,

\\ p_1=2\\p_2=3\\p_3=p_1p_2+1 = 7 \\ p_4=p_1p_2p_3+1 = 43 \\ p_5 = p_1p_2p_3p_4+1 =1807 \\ p_6 = p_1p_2p_3p_4p_5+1 =3263443 \\ ...

2,3,7,43是素数,但1807虽然处以2,3,7,43都余1,但是它不是素数,1807=13*139,但是没关系,我们又发现了新的素数13,可以继续运算。

实际上,2*3*7*43*13+1=23479,也不是素数,它等于53*443,没关系,无论你得到的结果是不是素数,都会发现新的素数。素数是无穷多个。

定理证明的基础-算术基本定理(注意不是代数基本定理)

定理证明的基础是算术基本定理,描述为,任一大于1的自然数,要么本身是质数,要么可以分解为几个质数之积,当代入1时候这种分解是无限的,去掉1时分解则是唯一的。

为了保证算术基本定理为1,1不能是质数,因为6=2*3,如果1是质数了,那么6=2*3*1,或者6=2*3*1*1。。。,所以,规定1不是质数。

算术基本定理的证明

描述:设整数 a ≥ 2 , 那么 a 一定可表示为素数的乘积,即

a=p_1 p_2 p_3 \cdots p_s

其中p_j (0\leq j\leq s)是素数. (分解式中的素数可以相同).

证明 反证法. 假设结论不成立,则存在正整数 ≥ 2,它不能表示为素数的乘积. 设所有这种正整数组成的集合为 T,所以,根据假设,它是非空的,并且素数不能在这个集合中,因为任何素数都可以表示为1和它自身的积,不满足集合条件,所以集合中的元素一定是非素数,而非素数的数一定是合数,设n_0是T中的最小者,由于 T 中元素都不是素数,故n_0是合数,所以必有:

n_0=n_1n_2, 2\leq n_1,n_2 <n_0

n_0的最小性得到,n_1,n_2一定不再集合T中,所以都可表为素数的乘积:

n_1=p_{11}p_{12} \cdots p_{1s}, n_2=p_{21}p_{22} \cdots p_{2r}

这样,就把n_0表示为素数的乘积了:

n_0=n_1n_2=p_{11}p_{12} \cdots p_{1s}p_{21}p_{22} \cdots p_{2r}

这与假设矛盾. 证毕.

素数定理(区别代数基本定理,算术基本定理。。。:()

质数的个数公式π(n)是不减函数。且素数的分布个数接近于x/ln (x),这是素数定理,高斯提出来的,表示为:

\pi(x)\sim \frac{x}{ln(x)}

设x≥1,以π(x)表示不超过x的素数的个数,当x→∞时,π(x)~x/ln(x)。这个函数和真实的π(x)有些误差。

素性测试

常用的算法,在2到sqrt(n)之间任取一个数,如果n能被整除则不是素数,否则就是素数: 

#include<stdio.h>
#include <math.h>
int main(void)
{int i,j,n;printf("Please input numbers: ");scanf("%d",&n);j=(int)sqrt(n);for(i=2;i<=j;i++){if(n%i==0){break;}}if(j<i){printf("%d is prime!\n",n);}else{printf("%d is not prime!\n",n);}return 0;
}

此程序的理论依据如下:实际上是第一条定义的逆否命题,如果没有一个2到sqrt(a)的数字能够整除(条件更强,不仅仅限定素数)a,那么a就不可能是合数了。

另外,在编程中经常遇到的一个结论是,如果(ka+b)mod m=0,但是b mod m = r,则必然ka mod m = m-r.

比如(i * 40+37)%3 ==0, 由于 37 mod 3 = 1,则必然40*i mod  3 = 3-1=2. i = (s*3+2)/40. 

依据是下面定理2:

参考文章

3.1-同余的概念与基本性质-4-同余的基本性质-(定理2)-(初等数论-闵嗣鹤-第四版)_哔哩哔哩_bilibili


结束!

这篇关于初等数论以及欧几里德定理的证明的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/177454

相关文章

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题:

uva 1342 欧拉定理(计算几何模板)

题意: 给几个点,把这几个点用直线连起来,求这些直线把平面分成了几个。 解析: 欧拉定理: 顶点数 + 面数 - 边数= 2。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#inc

数论ZOJ 2562

题意:给定一个数N,求小于等于N的所有数当中,约数最多的一个数,如果存在多个这样的数,输出其中最大的一个。 分析:反素数定义:对于任何正整数x,其约数的个数记做g(x).例如g(1)=1,g(6)=4.如果某个正整数x满足:对于任意i(0<i<x),都有g(i)<g(x),则称x为反素数。 性质一:一个反素数的质因子必然是从2开始连续的质数。 性质二:p=2^t1*3^t2*5^t3*7

POJ2247数论

p = 2^a*3^b*5^c*7^d 求形如上式的第n小的数。 import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWriter;import java.math.BigInteger;import java.u

CSP-J基础之数学基础 初等数论 一篇搞懂(一)

文章目录 前言声明初等数论是什么初等数论历史1. **古代时期**2. **中世纪时期**3. **文艺复兴与近代**4. **现代时期** 整数的整除性约数什么样的整数除什么样的整数才能得到整数?条件:举例说明:一般化: 判断两个数能否被整除 因数与倍数质数与复合数使用开根号法判定质数哥德巴赫猜想最大公因数与辗转相除法计算最大公因数的常用方法:举几个例子:例子 1: 计算 12 和 18

CSP-J基础之数学基础 初等数论 一篇搞懂(二)

文章目录 前言算术基本定理简介什么是质数?举个简单例子:重要的结论:算术基本定理公式解释:举例: 算术基本定理的求法如何找出质因数:举个简单的例子: 重要的步骤:C++实现 同余举个例子:同余的性质简介1. 同余的自反性2. 同余的对称性3. 同余的传递性4. 同余的加法性质5. 同余的乘法性质 推论 总结 前言 在计算机科学和数学中,初等数论是一个重要的基础领域,涉及到整数

Java验证辛钦大数定理

本实验通过程序模拟采集大量的样本数据来验证辛钦大数定理。   实验环境: 本实验采用Java语言编程,开发环境为Eclipse,图像生成使用JFreeChart类。   一,验证辛钦大数定理 由辛钦大数定理描述为: 辛钦大数定理(弱大数定理)  设随机变量序列 X1, X2, … 相互独立,服从同一分布,具有数学期望E(Xi) = μ, i = 1, 2, …, 则对于任意正数ε ,

2014年暑假培训 - 数论

A银河上的星星 /**************************************************************     Problem: 1014     User: DoubleQ     Language: C++     Result: Accepted     Time:190 ms     Memor

CPC23三 K.(Lucas定理)

K.喵喵的神·数 Time Limit: 1 Sec Memory Limit: 128 MB Description 喵喵对组合数比较感兴趣,并且对计算组合数非常在行。同时为了追求有后宫的素质的生活,喵喵每天都要研究质数。 我们先来复习一下什么叫做组合数。对于正整数P、T 然后我们再来复习一下什么叫质数。质数就是素数,如果说正整数N的约数只有1和它本身,N

ZOJ1007(数论)

题目链接:点击打开链接 解题思路:   纯粹的数学题,没有输入,直接要求输出.直接给出的求和式子极限到无穷,无法直接计算.Hint里给出了提示,大意就是说求g(x) - g(1)的求和极限,最后再加上g(1)就能求出g(x).   由g(x)  - g(1) 能够得出 1 / k*(k+x) - 1 / k * (k + 1) = (1 - x) / k * ( k + 1) * (k