#include<stdio.h> main() { //input int num ; while( 1 ) { scanf("%d", &num ); int i = 1; int temp = 0; for ( ; i<= num ; i++ )//point 1 { temp = i*i ; if ( temp == num ) { printf("%d*%d=%d\n", i, i, num ); break ; }else if ( temp > num )//point 2 { printf ("No\n"); break; } } } }
遇到的点:
point 1: 此处为 <= 因为 1*1=1
point 2: 没有考虑 i*i < num 的情况,因为如果小于,说明还有找到的可能,继续循环就可以了。此处当 i*i > num 时,说明随着 i 的增大,已经不可能找到根了,所以此次查找失败,直接退出循环,等待用户的下一次输入