13 算数基本定理(唯一分解定理)

算术基本定理可表述为:

任何一个大于1的自然数  ,都可以唯一分解成有限个质数的乘积  ,

这里  均为质数,其诸指数  是正整数。

这样的分解称为  的标准分解式。

定理应用:

 贴上代码:

  #include<bits/stdc++.h>
  #define MAXN 1e5
  int N;
  bool isprime[MAXN];
  int prime[MAXN];//1-N中的素数
  int cnt = 0;//记录1-N中素数的个数
  struct node {
       int p;
       int num;
       node() {p = 0; num = 0;}
  } a[MAXN];
  int m = 0;//素数组元素个数
  
  void init() { //寻找1-N中的所有素数(埃氏筛)
       memset(isprime,true,sizeof isprime);
       for(int i = 2; i <= N; i++) {
           if(isprime[i]) {
               prime[cnt++] = i;
               for(int j = 2;i * j <= N; j++)
                  isprime[i * j] = false;
           }
       }
  }
  
  void solve() { //算术基本定理分解N
      m = 0;
      for(int i = 0; i < cnt; i++) {
          if(N % prime[i] == 0) {
              while(N % prime[i] == 0) {
                  a[m].p = prime[i];
                  a[m].num++;
                  N /= prime[i];
              }
              m++;
          }
      }
  }

猜你喜欢

转载自blog.csdn.net/c_cqq/article/details/81226373