• 用唯一分解定理求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
    ",ans);
        return 0;
    }
    

      

  • 相关阅读:
    应用程序跳转
    百度地图集成
    导航 -MapKit
    导航
    定位
    ApexSql Log使用体会
    Oracle学习 第16天
    上来冒个泡吧
    Oracle学习 实战心得总结
    好久没上来冒个泡了,整整一个半月
  • 原文地址:https://www.cnblogs.com/lengsong/p/11290619.html
Copyright © 2020-2023  润新知