
一个数开方之后,只有整数部分而没有小数部分,则该数字为完全平方数
根据完全平方数的概念,
其中通过 pow() 函数去进行这个数的开方,
但是因为 pow() 函数的返回类型是 double,
即使这个数开方之后,
即使不是完全平方数,但也会得到一个经过开方得到的值,
所以我们怎么能具体判断它是不是完全平方数呢?
因为完全平方数没有小数部分,
所以它经过开方,然后再平方,
其值仍然为之前的初始值,
而如果这个数不是完全平方数,
经过开方之后,
我们可以通过对 pow() 函数的返回值进行 int 类型的强转,
从而得到其整数部分,
此时整数部分经过平方后就不与它未开方时的数相等,
由此可以作为我们的判断依据
- #include
-
- using namespace std;
-
- int main( )
- {
- int data = 0;
- cin >> data;
- int change = pow(data,1/2.0);
- if( change * change == data)
- {
- cout << "YES";
- }
- else
- {
- cout << "NO";
- }
- return 0;
- }