跳到主要内容

题解:P10720 [GESP202406 五级] 小杨的幸运数字

· 阅读需 1 分钟
lailai
Blogger

原题链接

解题思路

循环遍历 [2,a][2,\sqrt{a}] 之间的整数 ii,检查 ii 是否是 aa 的因子。如果是,就不断从 aa 中去除 ii 因子,直到 aa 不能被 ii 整除为止。

显然 aa 至多有 11 个质因子大于 a\sqrt{a}。循环结束后,如果 a>1a>1,那么此时 aa 也是一个质因子。

统计质因子的种数,判断其是否等于 22。时间复杂度 O(na)O(n\sqrt{a})

参考代码

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

int main()
{
int n;
cin>>n;
while(n--)
{
int a;
cin>>a;
int cnt=0,t=a;
for(int i=2;i*i<=t;i++)
{
if(a%i==0)
{
cnt++;
while(a%i==0)a/=i;
}
}
if(a>1)cnt++;
cout<<(cnt==2)<<'\n';
}
return 0;
}