链接地址。
分析:
如果n能被a整除,那么一定存在一个b使得a*b = n。开关经两次变化相当于没有变化。那么只要看a = b的那种特殊情况就OK了。
#include <stdio.h> #include <math.h> #include <stdlib.h>int main(){unsigned n, k;while(scanf("%d", &n) == 1 && n){k = (int)sqrt(n*1.0);if(k*k == n){printf("yes\n");}else printf("no\n");}return 0; }