网站制作公司 沈阳,可以直接做ppt的网站吗,全面的河南网站建设,正规网站建设价格1.二进制表示中质数个计算置位
给你两个整数 left 和 right #xff0c;在闭区间 [left, right] 范围内#xff0c;统计并返回 计算置位位数为质数 的整数个数。
计算置位位数 就是二进制表示中 1 的个数。
例如#xff0c; 21 的二进制表示 10101 有 3 个计算置位。
方…1.二进制表示中质数个计算置位
给你两个整数 left 和 right 在闭区间 [left, right] 范围内统计并返回 计算置位位数为质数 的整数个数。
计算置位位数 就是二进制表示中 1 的个数。
例如 21 的二进制表示 10101 有 3 个计算置位。
方法一直接模拟
#方法一直接模拟
def countPrimeSetBits(left,right):ans0def count1(n):res0while n:resn1 n1return res #计算1的个数for i in range(left,right1):temcount1(i)flagTrue if tem!1 else False #判断是不是素数for j in range(2,tem//21):if tem%j 0:flagFalse breakif flag:ans1return ans
2.二进制间距
给定一个正整数 n找到并返回 n 的二进制表示中两个 相邻 1 之间的 最长距离 。如果不存在两个相邻的 1返回 0 。
如果只有 0 将两个 1 分隔开可能不存在 0 则认为这两个 1 彼此 相邻 。两个 1 之间的距离是它们的二进制表示中位置的绝对差。例如1001 中的两个 1 的距离为 3 。
方法一位运算模拟
#方法一位运算模拟
def binaryGap(n):res[] #记录下标ind0 while n :if n11:res.append(ind)ind1n1if len(res)1:return 0 #特殊情况return max([res[i1]-res[i] for i in range(0,len(res)-1)]) #相邻1的最大值