题目描述
给定一个数 n,判定它是否有一个不为 1 的完全平方数因子。
也就是说,是否存在某个 k,k>1,使得 k2 能够整除 n。
输入格式
输入包含多组测试数据。
每组数据占一行,包含一个整数 n。
输出格式
每组数据输出一行,一个结果,如果有不为 1 的完全平方数因子,则输出 Yes,否则输出 No。
数据范围
每组输入最多包含 100 组数据。
1<n<10000
样例
输入样例:
15
12
输出样例:
No
Yes
C++ 代码
#include<iostream>
using namespace std;
// 分解质因数
bool div(int x)
{
bool check=false;
for(int i=2;i<=x/i;i++)
{
if(x%i==0)
{
int cnt=0;
while(x%i==0)
{
cnt++;
x/=i;
}
if(cnt>=2) check=true;
}
}
return check;
}
int main()
{
int n;
while(cin>>n)
{
if(div(n)) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
return 0;
}