算术基本定理

· · 个人记录

又称唯一分解定理。

其意思为:所有大于 1 的正整数都可以被唯一分解为若干个质因数的积。

如:6=2×3,60=2×2×3×5=2^2×3^1×5^1.

例题:P2043 质因子分解

#include<bits/stdc++.h>
using namespace std;

int p[5005];
bool st[10005];
int k=0;

void get(int x){//线性筛法
    for(int i=2;i<=x;i++){
        if(!st[i])
            p[++k]=i;
        for(int j=1;j<=k && p[j]*i<=x;j++){
            st[p[j]*i]=true;
            if(!i%p[j])
                break;
        }
    }
    return ;
}

int main(){
    int n;
    scanf("%d",&n);
    get(n);
    for(int i=1;i<=k;i++){
        printf("%d ",p[i]);
        int cnt=p[i];
        int ans=0;
        while(cnt<=n){//计算质因子个数
            ans+=n/cnt;
            cnt*=p[i];
        }
        printf("%d\n",ans);
    }
    return 0;
}