用唯一分解定理求m/n

Posted lengsong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用唯一分解定理求m/n相关的知识,希望对你有一定的参考价值。

用唯一分解定理求m/n,保证m能够被n整除;

这其中用到了素数筛以及快速幂

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e4+5;
bool vis[maxn];
int prime[maxn],cnt=0,e[maxn];
void getprime()
    for(int i=2;i<maxn;++i)
        if(!vis[i])prime[++cnt]=i;
        for(int j=i*2;j<maxn;j+=i)
            vis[j]=1;
    

void solve(int x,int d)
    for(int i=1;i<=cnt;++i)
        while(x>1&&x%prime[i]==0)
            x=x/prime[i];
            e[i]+=d;
        
        if(x<=1)break;
    

int qpow(int x,int cnt)
    int ans=1;
    while(cnt)
        if(cnt&1)ans*=x;
        x=x*x;
        cnt>>=1;
    
    return ans;

int main()

    getprime();
    int m=10000,n=10;
    solve(m,1);
    solve(n,-1);
    int ans=1;
    for(int i=1;i<=cnt;++i)
        ans*=qpow(prime[i],e[i]);
    
    printf("%d\n",ans);
    return 0;

  

以上是关于用唯一分解定理求m/n的主要内容,如果未能解决你的问题,请参考以下文章

UVa 10375 Choose and divide (唯一分解定理)

UVa 10375 - Choose and divide(唯一分解定理)

POJ1845Sumdiv(求所有因子和 + 唯一分解定理)

hdu 1215 求约数和 唯一分解定理的基本运用

UVA294DIvisors(唯一分解定理+约数个数)

数论Sumdiv(整数的唯一分解定理+约束和公式+递归求等比)