P8754 [蓝桥杯 2021 省 AB2] 完全平方数
题解
分解n的质因子,如果为奇数就补一个
由于大于
code
#include<bits/stdc++.h>
#define ll long long
using namespace std;
vector<int> prime;
vector<int> minfac(1e6+3,0);
int main()
{
for(ll k=2;k<=1e6+3;k++)
{
if(!minfac[k]) prime.push_back(k);
for(int i=0;i<prime.size()&&prime[i]*k<=1e6+2;i++)
{
minfac[prime[i]*k]=1;
if(k%prime[i]==0) break;
}
}
ll n;
cin>>n;
ll x=1;
for(int i=0;i<prime.size();i++)
{
int cnt=0;
while(n%prime[i]==0)
{
n/=prime[i];
cnt++;
}
if(cnt&1) x*=prime[i];
}
if(n!=1) x*=n;//检查是否有大于根号n的质因子
cout<<x<<endl;
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步