每个人的Python:数学、算法和游戏编程训练营
上QQ阅读APP看书,第一时间看更新

4.4.2 编程实现——深度判断二进制数中特殊数的个数

本题将质数与二进制进行了简单的结合。给定两个整数L和R,分别表示范围的左边界和右边界。在这个范围内,如果一个数值的二进制表示中,1的个数是质数,则将其标记为一个特殊数,尝试编程返回范围内所有特殊数的个数。

本题本身没有特别的地方,也没有额外的难度,只是将二进制运算的特点与质数的特性进行了结合。我们之前介绍过方法,通过位移运算与按位与运算可以方便地获取二进制数中1的个数,判断质数对我们来说也没有任何难度,示例代码如下:

针对本题,我们有一种更加简单的方式来获取二进制数中1的个数。这要借助Python中的字符串函数来实现。首先,我们可以将数值转换成二进制形式的字符串,之后只需要统计字符串中字符“1”的个数即可。Python中字符串的count函数刚好可以实现这个功能,示例代码如下:

在Python中,对字符串进行的相关操作要比直接对数值进行操作容易得多。因此,很多时候如果需要对数值进行截取、拆分、组合等操作,我们都可以先将其转换成字符串,再使用相关函数进行处理。