首页 > 其他分享 >LeetCode 762[二进制表示中质数个计算置位]

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

时间:2025-01-04 11:35:14浏览次数:1  
标签:false 置位 762 质数 二进制位 num iNum iCount

题目

链接

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

详情

实例

提示

题解

思路

两个条件:

1、二进制位为1

2、满足条件1的个数为质数

 

 首先 for 循环遍历区间

        for (int i = left; i < right + 1; i++)
        {
            int iCount = 0;//二进制位为1的个数
            int iNum = i;//待转换成二进制的数
            ...
        }

以下为for 循环的循环体:

求 iNum 二进制位并求出二进制位为1的个数 iCount:

常规方法就是 iNum 不停的循环除2,然后它的余数就是二进制位了,当其余数为1时,iCount 加1,直到最后得到的商为0,就退出循环

            while (iNum > 0)
            {
                if (1 == (iNum % 2))
                    iCount++;

                iNum /= 2;
            }

再判断 iCount 是否为质数,为质数则返回值 iRet 加1

            if (is_Prime(iCount))
                iRet++;

遍历结束后输出 iRet

        return iRet;

 

 

此处写了一个 is_Prime 函数用来判断是否为质数:

首先判断传入值 num 是否为 0,为 0 则不为质数,输出false

        if (0 == iNum)
            return false;

然后判断传入值 num 是否为 1,为1则不为质数,输出false

        if (1 == iNum)
            return false;

之后 for 循环来从 2 开始遍历,到 num - 1 循环结束,如果遍历值能被 num 整除,则不为质数,输出 false

        for (int i = 2; i < iNum; i++)
        {
            if (0 == iNum % i)
                return false;
        }

遍历结束,则除了 1 和 num 本身外,不能整除,则为质数,输出 true

        return true;

代码

标签:false,置位,762,质数,二进制位,num,iNum,iCount
From: https://www.cnblogs.com/EricsT/p/18651644

相关文章

  • 2025-01-01:优质数对的总数Ⅰ。用go语言,给定两个整数数组 nums1 和 nums2,分别长度为 n
    2025-01-01:优质数对的总数Ⅰ。用go语言,给定两个整数数组nums1和nums2,分别长度为n和m,以及一个正整数k。如果nums1数组中的元素nums1[i]能被nums2数组中的元素nums2[j]乘以k除尽,则称(i,j)为一个优质数对(其中0<=i<=n-1,0<=j<=m-1)。请计算并返回所......
  • 【C++】B2085 第 n 小的质数
    博客主页:[小ᶻ☡꙳ᵃⁱᵍᶜ꙳]本文专栏:C++文章目录......
  • 基于钜泉计量AD的电表应用专题推荐(ATT7053D、HT7136、HT7627S-E
    关于电力仪表上应用专题介绍,钜泉电能计量、PA驱动、Flash存储HiTrend(钜泉)电能计量芯片单相计量ADC:ATT7053D,ATT7053C,HT7017,HT7017C三相计量ADC:HT7036、HT7038、ATT7022E、HT7136、HT7132、HT7032-L单相计量SOC:HT5019、HT5017,HT5025、HT5029,HT5033,HT5035,HT5037R46物联网表IC......
  • leetcode 866. 回文质数
    866.回文质数想着开大数组,用质数筛选的方法。但是开大数组超内存了......
  • 6个200以内的等差质数
    目录题目描述算法思路代码实现后记无注释满分代码代码如下:题目描述需要找到6个200一内的等差质数,没有输入,直接输出找到的这6个等差质数。算法思路1.此题没有输入数据,直接输出。2.了解等差数。等差数列是指从第二项起,每一项与它的前一项的差等于同一个常数的......
  • 【蓝桥杯每日一题】数的拆分——筛质数
    数的拆分2024-12-12数的拆分筛质数思维题目大意给定(T)个正整数aia_iai​,分别问......
  • 质数-质数筛选、质因数分解、互质判定
    质数筛选对于一个正整数N,一次性求出 1~N 之间所有的质数,即为质数筛选。显然根据上述「质数判定」的内容,我们可以通过枚举 1~N 的所有数,再依次使用「试除法」来判定其是否为质数,从而完成质数的筛选。但此种方法的时间复杂度过高,为 O(N√N) 。质数筛选经典方法:「Eratosthene......
  • 【洛谷】P1217 [USACO1.5] 回文质数(AC详解)
    #include<iostream>//引入输入输出流头文件,用于实现标准输入输出操作,例如使用cin和cout#include<cmath>//引入数学函数库头文件,主要用于调用sqrt函数来求平方根,辅助判断质数usingnamespacestd;//函数声明,用于判断一个整数是否为质数,接收一个整数参数,返回布尔值......
  • 埃氏筛/线性筛+质数与约数一本通题解
    埃氏筛:筛选\(1...n\)中所有的质数考虑一个质数\(x\),它的\(2x,3x,4x...n/x*x\)都是合数,打上标记即可\(O(NloglogN)\)for(inti=2;i<=n;i++){if(vis[i])continue;p[++cnt]=i;for(intj=i;j<=n/i;j++){vis[i*j]=1;}}线性筛:考虑一个合数......
  • 质数
    质数的判定试除法:判定n是否为质数,扫描2~sqrt(n)即可,特判0和1这两个数,它们既不是质数,也不是合数。boolis_prime(intn){if(n<2)return0;for(inti=2;i<=sqrt(n);i++)if(n%i==0)return0;return1;}质数的筛选问题:给定一个整数......