因子化简

原题链接

题解

暴力。
知识点 : \(exp(x)\) 返回 \(e^x\)
如果这里先把所有的素数求出来的话,也要 \(n·\sqrt{n}\) 也就是 \(1e^{15}\) ,所以直接遍历就好了

code

#include<bits/stdc++.h>
#define ll long long
using namespace std;
int main()
{
    ll t;
    cin>>t;
    while(t--)
    {
        ll n,k;
        cin>>n>>k;
        ll len=exp(log(n)/k);
        ll ans=1;
        for(ll i=2;i<=len;i++)
        {
            ll cnt=0,tem=1;
            while(n%i==0)
            {
                n/=i;
                tem*=i;
                cnt++;
            }
            if(cnt>=k) ans*=tem;
        }
        cout<<ans<<endl;
    }
    return 0;
}

posted @ 2024-04-23 22:20  纯粹的  阅读(30)  评论(0)    收藏  举报