码迷,mamicode.com
首页 > 其他好文 > 详细

数论-算术基本定理

时间:2018-10-02 18:07:04      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:const   整数   lock   自身   algo   div   svg   素数   算术   

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

任何一个大于1的自然数 N,如果N不为质数,那么N可以唯一分解成有限个质数的乘积技术分享图片

,这里P1<P2<P3......<Pn均为质数,其中指数ai是正整数。这样的分解称为 的标准分解式

  在进行证明这个定理之前,先说一个关于素数整除性的一个基本而重要的事实。

欧几里得引理:对所有的素数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的自然数的积。设技术分享图片,其中a 和b 都是介于1和n 之间的自然数,因此,按照n 的定义,a 和b 都可以写成质数的乘积。从而技术分享图片 也可以写成质数的乘积。由此产生矛盾。因此大于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;
}

 

数论-算术基本定理

标签:const   整数   lock   自身   algo   div   svg   素数   算术   

原文地址:https://www.cnblogs.com/AC-AC/p/9736550.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!