【位运算-简单】762. 二进制表示中质数个计算置位

LeetCode 762. 二进制表示中质数个计算置位(详细解析+多解法实现) LeetCode 762题解:统计区间内二进制置位个数为质数的数字数量 这道题目要求统计[left, right]区间内二进制表示中1的个数(计算置位)为质数的数字数量。解题核心分为两步:计算二进制1的个数和判断是否为质数。 关键解题思路: 计算二进制1的个数:可用位运算n&(n-1)或Python内置函数bin(n).count('1') 质数判断优化:由于数字最多20位二进制,置位个数范围0-20,只需预存20以内的质数集合{2,3,5,7,11,13,17,19}即可快速判断 阅读详情

【题目】
给定两个整数 L 和 R ,找到闭区间 [L, R] 范围内,计算置位位数为质数的整数个数。
(注意,计算置位代表二进制表示中1的个数。例如 21 的二进制表示 10101 有 3 个计算置位。还有,1 不是质数。)
【示例 1】
输入: L = 6, R = 10
输出: 4
解释:
6 -> 110 (2 个计算置位,2 是质数)
7 -> 111 (3 个计算置位,3 是质数)
9 -> 1001 (2 个计算置位,2 是质数)
10-> 1010 (2 个计算置位,2 是质数)
【示例 2】
输入: L = 10, R = 15
输出: 5
解释:
10 -> 1010 (2 个计算置位, 2 是质数)
11 -> 1011 (3 个计算置位, 3 是质数)
12 -> 1100 (2 个计算置位, 2 是质数)
13 -> 1101 (3 个计算置位, 3 是质数)
14 -> 1110 (3 个计算置位, 3 是质数)
15 -> 1111 (4 个计算置位, 4 不是质数)
【注意】
L, R 是 L <= R 且在 [1, 10^6] 中的整数。
R - L 的最大值为 10000。
【代码】
【Python】
在这里插入图片描述

class Solution:
    def countPrimeSetBits(self, L: int, R: int) -> int:
        def judge(num):
            if num<=1:
                return False
            for i in range(2,int(num**0.5)+1):
                if num%i==0:
                    return False
            return True
        cnt=0
        jilu=dict()
        for i in range(L,R+1):
            dic=dict(Counter(bin(i)[2:]))
            if judge(dic.setdefault("1",0)):
                cnt+=1
        return cnt

【方法2:预先设置质数数组】
在这里插入图片描述

class Solution(object):
    def countPrimeSetBits(self, L, R):
        primes = {2, 3, 5, 7, 11, 13, 17, 19}
        return sum(bin(x).count('1') in primes
                   for x in range(L, R+1))

【方法3:魔数+位运算】
在这里插入图片描述

class Solution(object):
    def countPrimeSetBits(self, L, R):
        ans=0
        for i in range(L,R+1):
            ans+=(665772>>bin(i).count('1'))&1
        return ans

魔数:665772的由来
step1:由题目中的注意事项知道:L, R 是 L <= R 且在 [1, 106] 中的整数,数字是介于1到106之间的,我们将106转换为2进制得:11110100001001000000,长度为20,所以[L,R]之间的数字中转换为二进制之后,最多有20个1,所以我们要计算【1,20】哪些是质数,这个可以很容易得出

print(len(bin(1000000)[2:]))
print(bin(1000000)[2:])
# 20
# 11110100001001000000

step2:【1,20】之间的质数有

{2, 3, 5, 7, 11, 13, 17, 19}

step3:将【1,20】之间的质数编码进二进制数字中进行表示得:魔数:665772

print(int("10100010100010101100",2))
#输出:665772
bin(i).count('1')
#这句代码的含义是:将数字i转换为2进制字符串,然后计算该字符串中包含的1的个数n,
#将魔数右移n位,
开关电源双环控制原理与实战调试指南 开关电源双环控制是一种融合电流内环与电压外环的嵌套反馈架构,其核心原理基于能量路径的分层调节:电流环实现微秒级瞬态响应与过流抑制,电压环保障稳态精度与长期稳定性。该技术显著提升系统抗扰性、动态响应速度及鲁棒性,广泛应用于工业PLC电源、伺服驱动器、服务器电源等中高功率场景。区别于单环控制的滞后缺陷,双环通过带宽分割(电流环≤0.2×开关频率,电压环≤电流环带宽的1/5)和物理延迟建模(光耦延迟、采样延迟、ZOH效应),构建可预测、可测量、可复现的稳定闭环。本文聚焦真实硬件约束下的PI参数整定、斜率补偿设计、 阅读详情

相关推荐

手把手教你用Ubuntu Base 20.04打造轻量级ARM开发板根文件系统(附常见问题解决)

本文详细介绍了如何基于Ubuntu Base 20.04 LTS构建轻量级ARM开发板根文件系统,涵盖环境准备、镜像制作、跨架构配置、软件包定制及常见问题解决。通过实战指南,开发者可快速掌握ARM架构下的根文件系统构建技巧,优化系统性能并解决部署中的典型问题。

gin88的博客 213

762. 二进制表示中质数个计算置位 C++(位运算,bitset)

给定两个整数 L 和 R ,找到闭区间 [L, R] 范围内,计算置位位数为质数的整数个数。 (注意,计算置位代表二进制表示中1的个数。例如 21 的二进制表示 10101 有 3 个计算置位。还有,1 不是质数。) 示例 1: 输入: L = 6, R = 10 输出: 4 解释: 6 -> 110 (2 个计算置位,2 是质数) 7 -> 111 (3 个计算置位,3 是质数) 9 -> 1001 (2 个计算置位,2 是质数) 10-> 1010 (2 个计算置位,2 是质数)

ganlanA的博客 285

STM32Cubemx-H7-17-麦克纳姆轮驱动

我们先看.h,知道哪些函数会有哪些功能和宏定义参数首先 是在.h的宏定义处定义引脚编号,比如tb6612控制方向的引脚,以及设定了哪个定时器作为pwm输出,还有编码计次的中断引脚/* 硬件相关宏定义 *//*1 前进方向往上 42 3*/// TB6612 方向引脚定义/* 定时器相关宏定义 *//* 编码器相关宏定义 */把自己的引脚根据原理图填对应,方向引脚也是,如果发现反转就把对应的引脚定义反过来,编码也是,编码我们用一个引脚就好,都在cubemx配置好。

m0_74211379的博客 1423

C的|、||、&、&&、异或、~、!运算

位运算    位运算的运算分量只能是整型或字符型数据,位运算把运算对象看作是由二进位组成的位串信息,按位完成指定的运算,得到位串信息的结果。位运算符有:    &(按位与)、|(按位或)、^(按位异或)、~ (按位取反)。    其中,按位取反运算符是单目运算符,其余均为双目运算符。    位运算符的优先级从高到低,依次为~、&、^、|,    其中~的结合方向自右至左,且优先级高于算术运算符,其余运算符的结合方向都是自左至右,且优先级低于关系运算符。   (1)按位与运算符(&)    按位与运算将两个运

老衣的专栏 1万+

手把手教你搭建《黑色沙漠》单机版:从下载到联机的完整指南(含GM工具使用)

本文提供《黑色沙漠》单机版从下载安装到GM工具使用及局域网联机的完整教程。详细解析不同版本选择、系统配置要求、常见问题解决,并分享GM工具高级命令和局域网联机设置技巧,帮助玩家轻松搭建个性化游戏环境。

weixin_28738165的博客 470

IPD(集成产品开发)管理之道

IPD,是集成产品开发(Integrated Product Development)的缩写,它是集成了众多管理模型和理论、众多企业最佳管理实践的一整套体系,可以帮助企业快速响应市场变化、缩短产品上市时间、减少资源浪费、提高生产力,最终取得商业成功。IPD的思想最早来源于美国PRTM公司出版的《产品及生命周期优化法》一书中,该书详细描述了IPD模式所包含的各个方面。但IPD在中国的普及,源于IBM和华为的推行使用。IPD作为一套先进的产品研发管理模式,其成功的基础是功能部门和各团队之间的密切配合。

钢镚·真的博客 2716

Leetcode 762. Prime Number of Set Bits in Binary Representation 二进制表示中质数个计算置位

题目:给定两个整数 L 和 R ,找到闭区间 [L, R] 范围内,计算置位位数为质数的整数个数。(注意,计算置位代表二进制表示中1的个数。例如 21 的二进制表示 10101 有 3 个计算置位。还有,1 不是质数。)示例 1:输入: L = 6, R = 10 输出: 4 解释: 6 -&gt; 110 (2 个计算置位,2 是质数) 7 -&gt; 111 (3 个计算置位,3 是质数) 9...

zhangzhetaojj的博客 367

【华为OD机试真题 2025B卷】737、统计监控器、需要打开多少监控器 | 机试真题+思路参考+代码分析(C++、Java、Py、C语言、JS)

【华为OD机试真题 2025B卷】737、统计监控器、需要打开多少监控器 | 机试真题+思路参考+代码分析(C++、Java、Py、C语言、JS) 华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2025e卷,od机试,2025E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2025华为

KJ.JK 717

762. 二进制表示中质数个计算置位C++

链接: 762. 二进制表示中质数个计算置位. 描述,示例和提示: 代码: class Solution { public: unordered_set<int> prime = {2,3,5,7,11,13,17,19}; int countPrimeSetBits(int left, int right) { int ans = 0; for(int i = left; i <= right; i++) { i

sakeww的博客 963

YOLOv8改进 | 主干篇 | 利用MobileNetV2替换Backbone(轻量化网络结构)

本文给大家带来的改进机制是,其是专为移动和嵌入式视觉应用设计的轻量化网络结构。这些模型基于简化的架构,并利用深度可分离卷积构建轻量级深度神经网络,其引入了两个简单的全局超参数,用于在延迟和准确性之间进行有效的权衡。实验表明,MobileNets在资源和准确性的权衡方面表现出色,并在多种应用(如对象检测、细粒度分类、面部属性识别和大规模地理定位)中展现了其有效性,这个模型非常适合轻量化的读者来使用。适用检测目标:轻量化网络结构适合轻量化的读者⭐⭐⭐⭐。

Snu77的博客 5686

COMSOL介电弹性体数值仿真指南:预拉伸圆形DEA的稳态变形分析(II)

本期博客是《COMSOL介电弹性体数值仿真指南》系列博客中的一期。聚焦于介电弹性体驱动器(DEA)中最为经典的预拉伸圆形DEA驱动器构型,对其在COMSOL平台中的具体建模步骤进行介绍与讨论。

忘了面孔的Batou 355

二进制的置位、清零、获取某一位的状态

**二进制的置位、清零、获取某一位的状态** 定义几个字母,x:原始数据 y:某一位 置1:x|=1<<y 清0:x&=~(1<<y) 获取某一位:(x>>(y)&1)

大风歌df的编程日常 1733

华为MetaERP月结加速方案:并行关账技术深度解析

【摘要】华为MetaERP并行关账技术通过创新架构设计,将传统串行月结流程(8-12小时)优化为并行执行(2-4小时)。关键技术包括:1)基于DAG引擎的任务依赖分析,实现模块/子任务三级并行;2)Saga模式分布式事务保障数据一致性;3)动态资源分配算法提升CPU利用率至60-80%。实施效果显示月结时间缩短70%,成功率提升至99.8%,错误恢复时间减少75%。该方案为大型企业ERP系统提供了高效的月结加速方案,未来还将结合AI调度与混合云扩展持续优化。

金牌架构师 1441

Java实现 LeetCode 762 二进制表示中质数个计算置位(位运算+JDK的方法)

762. 二进制表示中质数个计算置位 给定两个整数 L 和 R ,找到闭区间 [L, R] 范围内,计算置位位数为质数的整数个数。 (注意,计算置位代表二进制表示中1的个数。例如 21 的二进制表示 10101 有 3 个计算置位。还有,1 不是质数。) 示例 1: 输入: L = 6, R = 10 输出: 4 解释: 6 -> 110 (2 个计算置位,2 是质数) 7 -> 11...

南 墙 1万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

LeetCode 762.二进制表示中质数个计算置位:位运算(mask O(1)判断)

LeetCode 762.二进制表示中质数个计算置位:位运算(mask O(1)判断) 给你两个整数 left 和 right ,在闭区间 [left, right] 范围内,统计并返回 计算置位位数为质数 的整数个数。 计算置位位数 就是二进制表示中 1 的个数。 例如, 21 的二进制表示 10101 有 3 个计算置位。

<font color="Pink">Tisfy的博客</font> 723

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

LeetCode 762. 二进制表示中质数个计算置位

762. 二进制表示中质数个计算置位题解 题目来源:762. 二进制表示中质数个计算置位 2022.04.05 每日一题

小明不要写Bug的博客 1154

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

762. 二进制表示中质数个计算置位 ●

762. 二进制表示中质数个计算置位 ●

chenyfan_blog 405

(位运算)leetcode762:二进制表示中质数个计算置位

题目 给定两个整数 L 和 R ,找到闭区间 [L, R] 范围内,计算置位位数为质数的整数个数。 (注意,计算置位代表二进制表示中1的个数。例如 21 的二进制表示 10101 有 3 个计算置位。还有,1 不是质数。) 示例 1: 输入: L = 6, R = 10 输出: 4 解释: 6 -> 110 (2 个计算置位,2 是质数) 7 -> 111 (3 个计算置位,3 是质数...

sdsc1314的博客 455

Leetcode762 二进制表示中质数个计算置位【C++】——Leetcode每日一题(2022.4.5)

Leetcode 4.5每日一题题解,C++ 简单模拟

物联黄同学的博客 818

LeetCode 762.二进制表示中质数个计算置位(位运算lowbit+质数判断)

文章目录题目描述解题思路代码一:库函数+枚举代码二:lowbit+打表代码三:库函数+比特掩码Reference 题目描述 762. 二进制表示中质数个计算置位 解题思路 枚举 [left,right][\textit{left},\textit{right}][left,right] 范围内的每个整数,挨个判断是否满足题目要求,对于每个数xxx需要解决两个问题: 如何求出xxx的二进制中的111的个数? 库函数Integer.bitCount() while循环统计 + lowbit操作:x

xylitolz的博客 877

Leetcode刷题53-762. 二进制表示中质数个计算置位(C++详细解法!!!)

题目来源:链接: [https://leetcode-cn.com/problems/prime-number-of-set-bits-in-binary-representation/] 762. 二进制表示中质数个计算置位1.问题描述2.我的解决方案3.大神们的解决方案4.我的收获 1.问题描述 给定两个整数 L 和 R ,找到闭区间 [L, R] 范围内,计算置位位数为质数的整数个数。 (注...

qq_40858438的博客 275

762 二进制表示中质数个计算置位

题目描述: 给定两个整数 L 和 R ,找到闭区间 [L, R] 范围内,计算置位位数为质数的整数个数。 (注意,计算置位代表二进制表示中1的个数。例如 21 的二进制表示 10101 有 3 个计算置位。还有,1 不是质数。) 示例 1: 输入: L = 6, R = 10 输出: 4 解释: 6 -> 110 (2 个计算置位,2 是质数) 7 -> 111 (3 个计算置位,3 是质数) 9 -> 1001 (2 个计算置位,2 是质数) 10-> 1010 (2 个计算置位,

weixin_44171872的博客 301

LeetCode题解:762. 二进制表示中质数个计算置位

题解

qq_41950660的博客 535

Leetcode每日一题 762. 二进制表示中质数个计算置位 lowbit 与 快筛质数 的结合题

📖本篇内容:Leetcode每日一题 762. 二进制表示中质数个计算置位 lowbit 与 快筛质数 的结合题 📑 文章专栏:leetcode每日一题《打卡日常》 📆 最近更新:2022 年 4 月 3日 Leetcode每日一题 744. 寻找比目标字母大的最小字母 二分应用题 ⭐算法仓库:小付的算法之路——Alascanfu-algorithm.git.io 🙊个人简介:一只二本院校在读的大三程序猿,本着注重基础,打卡算法,分享技术作为个人的经验总结性的博文博主,虽然可能有时会犯懒,但是还是.

Alascanfu的博客 611
上一篇: 【位运算-简单】476. 数字的补数
下一篇: 【位运算-简单】剑指 Offer 39. 数组中出现次数超过一半的数字(三种解法:投票+字典+中位数)
菜菜2022
博客等级 码龄9年 67粉丝 1033原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值