对一个整数开根号后,如何判断他的解是有理数还是无理数

对一个整数开根号后,怎么判断他的解是有理数还是无理数?
对一个整数开根号后,怎么判断他的解是有理数还是无理数?
C++   谢谢

------解决方案--------------------
bool IsRational(int num)
{
int root = sqrt((double)num);
if(num!=root*root)
return false;
else
return true;
}