1. 程式人生 > >數論-算術基本定理

數論-算術基本定理

lan com orm lba 表示 initial namespace all 整數

  算術基本定理又叫唯一因子分解定理,算術基本定理的表述如下:

任何一個大於1的自然數 N,如果N不為質數,那麽N可以唯一分解成有限個質數的乘積技術分享圖片

,這裏P1<P2<P3......<Pn均為質數,其中指數ai是正整數。這樣的分解稱為 N 的標準分解式。

  在進行證明這個定理之前,先說一個關於素數整除性的一個基本而重要的事實。

歐幾裏得引理:對所有的素數p和所有整數a,b,如果p|ab,則p|a,或p|b。即:如果一個素數整除兩個正整數的乘積,那麽這個素數可以至少整除這兩個正整數中的一個。如果 p|bc,那麽p|b或者p|c。

證明:采用反證法,假設p|ab,但p不整除a也不整除b。所以gcd(p,a)=1,gcd(p,b)=1,這是因為p的約數只有1和p,又因為假設a,b都不能被p整除,所以gcd(p,ab)=1;由假設p|ab可知gcd(ab,p)=p,於是產生矛盾。從而證明定理成立。

 


 算術基本定理的證明:

    必然性:用反證法:假設存在大於1的自然數不能寫成質數的乘積,把最小的那個稱為n。自然數可以根據其可除性(是否能表示成兩個不是自身的自然數的乘積)分成3類:質數、合數和1。首先,按照定義,n 大於1。其次,n 不是質數,因為質數p可以寫成質數乘積:p=p,這與假設不相符合。因此n只能是合數,但每個合數都可以分解成兩個嚴格小於自身而大於1的自然數的積。設技術分享圖片,其中ab 都是介於1和n 之間的自然數,因此,按照n 的定義,ab 都可以寫成質數的乘積。從而技術分享圖片 也可以寫成質數的乘積。由此產生矛盾。因此大於1的自然數必可寫成質數的乘積。

    唯一性:

反證法:假設有些大於1的自然數可以以多於一種的方式寫成多個質數的乘積,那麽假設n 是最小的一個。首先n 不是質數。將n 用兩種方法寫出技術分享圖片 。根據引理,質數技術分享圖片 ,所以技術分享圖片 中有一個能被技術分享圖片整除,不妨設為技術分享圖片。但技術分享圖片也是質數,因此技術分享圖片 。所以,比n小的正整數技術分享圖片也可以寫成技術分享圖片 。這與n 的最小性矛盾!

因此唯一性得證。

編程實現:

#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn = 1000; int a[maxn]; int num; int main(void) { int n; while(cin>>n) { num = 0; for(int i = 2; i <= n; i++) { while(n%i==0) { a[num++] = i; n = n/i; } } for(int i = 0; i < num; i++) { printf(i==0?"%d":"*%d",a[i]); } cout<<endl; } return 0; }

數論-算術基本定理