#include <iostream>
#include <stdio.h>
#include <math.h>
using namespace std;
int main()
{
int n;
while(scanf("%d",&n)&&n!=0)
{
int flag=0;
int k;
for(int i=2;i<=sqrt(n);i++)
{
if(n%(i*i)==0)
flag=1;
}
if(flag)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
return 0;
}
算法设计思想:从2到根号n之间遍历,找到符合因子做标记。
-
题目描述:
-
给定一个数n,判定它是否有一个不为1的完全平方数因子。也就是说,是否存在某个k,k>1,使得k*k能够整除n。
-
输入:
-
每行一个整数n,1<n<10000,n=0标志输入结束。
-
输出:
-
对于每一个输入的整数,在单独的一行输出结果,如果有不为1的完全平方数因子,则输出Yes,否则输出No。请注意大小写。
-
样例输入:
-
15 12 0
-
样例输出:
-
No Yes