zoukankan      html  css  js  c++  java
  • 唯一分解定理入门

    唯一分解定理:每一个大于1的正整数均可分解为有限个素数的积,如果不计素因数在乘积中的次序,则分解方式是唯一的。将n的素因数分解中相同的素因子收集到一起,可只每个大于1的正整数n可唯一地写成    n = p1a1p2a2p3a3...pkak其中,p1,p2,p3,...,pk ,是互不相同的素数,而a1,a2,a3,...,ak 是正整数,上面的分解式称为n的标准分解。

    性质:n的正约数个数,τ(n) = (1+a1)(1+a2)(1+a3)......(1+ak) ;n的正约数之和,σ(n)=(1+p1+...+p1a1)(1+p2+...+p2a2)...(1+pk+...+pkak)

     模板代码:

     1 /* */
     2 #include <iostream>
     3 #include <cstdio>
     4 #include <cstring>
     5 #include <string>
     6 #include <cmath>
     7 #include <algorithm>
     8 using namespace std;
     9 typedef long long ll;
    10 const int maxn=1e5;
    11 bool is[maxn];
    12 int cnt=0;
    13 ll a[maxn];//存素数
    14 ll ds[maxn],zs[maxn];//ds是底数,zs是指数
    15 
    16 void init()//打表,欧拉筛
    17 {
    18     memset(is,true,sizeof(is));
    19     is[0]=is[1]=false;
    20     for(int i=2;i<maxn;i++)
    21     {
    22         if(is[i]) a[cnt++]=i;
    23         for(int j=0; i*a[j]<maxn&&j<cnt; j++)
    24         {
    25             is[i*a[j]]=false;
    26             if( i%a[j]==0 ) break;
    27         }
    28     }
    29 }
    30 
    31 ll fj(ll x)//不同素数的个数
    32 {
    33     ll k=0,flag=0;
    34     for(ll i=0; i<cnt; i++ )
    35     {
    36         while(x%a[i]==0)
    37         {
    38             if(flag==0)
    39             {
    40                 flag=1;
    41                 k++;
    42             }
    43             x/=a[i];
    44             ds[k]=a[i];
    45             zs[k]++;
    46         }
    47         if(x==1) break;
    48         flag=0;
    49     }
    50     if( x!=1 )//如果分解完x都不等于1,那么x必定是一个素数
    51     {
    52         k++;
    53         ds[k]=x;
    54         zs[k]=1;
    55     }
    56     return k;
    57 }
    58 
    59 int main()
    60 {
    61     init();
    62     ll x;
    63     cin>>x;
    64     ll k=fj(x);
    65     for(ll i=1;i<=k;i++) printf("%lld^%lld%c",ds[i],zs[i],i==k?'
    ':'+');
    66     return 0;
    67 }
  • 相关阅读:
    oracle锁---原理篇
    SML + NL + HJ
    Oracle中varchar,varchar2,nvarchar,nvarchar2的区别
    oracle 一致读原理
    commit 流程
    IMPDP NETWORK_LINK参数
    WINDOWS访问虚拟机RedHat搭配的Apache2服务器
    初识malloc函数
    好吧,又失眠
    休息一天
  • 原文地址:https://www.cnblogs.com/wsy107316/p/11600592.html
Copyright © 2011-2022 走看看