您的位置:首页 > 其它

判断一个整数是否平方数

2009-12-11 20:23 351 查看
因为:以1为首项,2为公差的等差数列的求和公式为n^2.

所以要判断数k是否平方数,只须:

从该等差数列的左边开始,k不断的减数列的项,直至减不过为止。

此时如果k的值变为0,则k为平方数,并且执行减法的次数即是k的平方根!

-------------------------------------------------------------------

也可以用k不断的去除素数列,从2开始,不断除2,至不能整除,再接着除3,至不能整除,然后接着5、7、11.。。。,一直除到k的值为1! 然后看它刚才整除过的那些素数,如果这些素数可以分成两个完全相同的集合。那么k是平方数。并且分成的集合的所有元素之积就是k的平方根!

-------------------------------------------------------------------

以上方法虽然可行,但是当要判断的数很大的时候,要执行的减法太多,所以算法效率不高。还不如直接从1开始,比较每个数的平方与k的大小,这样相对要快一些。

还有如下思路可判断k是否平方数:

如果k的位数是奇数,比如位数为5,那么k的平方根必然是在100和320之间,先判断220的平方和k的大小,如果小于k,那么再判断220与320的中位数的平方与k的大小,反之判断100和220的中位数的平方与k的大小。。。 如此不断迭代下去,就可以判断k是否平方数。

如果k的位数是偶数,比如位数为6,那么k的平方根是在300和1000之间。。。。。

这其实是运用的二分查找的思路。具体实现细节这里不做深究。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐