Prime Number of Set Bits in Binary Representation

原创 2018年04月15日 21:44:01

Given two integers L and R, find the count of numbers in the range [L, R] (inclusive) having a prime number of set bits in their binary representation.

(Recall that the number of set bits an integer has is the number of 1s present when written in binary. For example, 21 written in binary is 10101 which has 3 set bits. Also, 1 is not a prime.)

Example 1:

Input: L = 6, R = 10
Output: 4
Explanation:
6 -> 110 (2 set bits, 2 is prime)
7 -> 111 (3 set bits, 3 is prime)
9 -> 1001 (2 set bits , 2 is prime)
10->1010 (2 set bits , 2 is prime)

Example 2:

Input: L = 10, R = 15
Output: 5
Explanation:
10 -> 1010 (2 set bits, 2 is prime)
11 -> 1011 (3 set bits, 3 is prime)
12 -> 1100 (2 set bits, 2 is prime)
13 -> 1101 (3 set bits, 3 is prime)
14 -> 1110 (3 set bits, 3 is prime)
15 -> 1111 (4 set bits, 4 is not prime)

Note:

  1. L, R will be integers L <= R in the range [1, 10^6].
  2. R - L will be at most 10000.

题目描述:用f(n)表示n的二级制表示中1的个数,问从L到R之间的所有数x,f(x)是质数的数x的个数

这里介绍网上的一种计算n的二进制表示中1的个数的方法:方法根据这样一个规律,n & (n-1)中的1的个数比n中1的个数少一个,我不知道怎么证明,有兴趣的可以自己试试。因此,不断将n & (n-1)赋予n,直到n为0,迭代的次数就是n中1的个数。

本题代码如下:

class Solution {
    public int countPrimeSetBits(int L, int R) {
    	int[] prime = new int[]{2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31};
    	Set<Integer> set = new HashSet<Integer>();
    	for(int num : prime)
    		set.add(num);
    	int res = 0;
    	for(int i = L; i < R + 1; i++){
    		if(set.contains(compute(i)))
    			res++;
    	}
        return res;
    }
    
    public int compute(int num){
    	int res = 0;
    	while(num != 0){
    		res++;
    		num = num & (num - 1);
    	}
    	return res;
    }
}

762. Prime Number of Set Bits in Binary Representation

问题描述:给一个数字区间范围,判断这个区间的数字的二进制形式中,1的个数为质数的数字共计多少个。 思路:首先是找出一个数的二进制形式中,1的个数总计。解决方法是通过将数字右移然后除以2取余。随后计算...
  • u011775905
  • u011775905
  • 2018-01-14 20:21:40
  • 169

LWC 67: 762. Prime Number of Set Bits in Binary Representation

LWC 67: 762. Prime Number of Set Bits in Binary Representation 传送门:762. Prime Number of Set Bits in...
  • u014688145
  • u014688145
  • 2018-01-14 14:48:00
  • 318

【LeetCode】762. Prime Number of Set Bits in Binary Representation 解题报告

【LeetCode】762. Prime Number of Set Bits in Binary Representation 解题报告 标签(空格分隔): LeetCode 题目地址:ht...
  • fuxuemingzhu
  • fuxuemingzhu
  • 2018-01-17 19:34:13
  • 158

Binary Number

 Description For 2 non-negative integers x and y, f(x, y) is defined as the number of differ...
  • a120705230
  • a120705230
  • 2014-03-25 11:28:03
  • 1190

【LeetCode】762. Prime Number of Set Bits in Binary Representation

Python版本:python3.6.2 762. Prime Number of Set Bits in Binary Representation Given two intege...
  • sunflower_kris
  • sunflower_kris
  • 2018-02-01 16:42:02
  • 27

Codeforces-484A-Bits

DescriptionLet’s denote as the number of bits set (‘1’ bits) in the binary representation of the non...
  • Ypopstar
  • Ypopstar
  • 2016-08-08 08:58:29
  • 224

LeetCode-762. Prime Number of Set Bits in Binary Representation

Given two integers L and R, find the count of numbers in the range [L, R] (inclusive) having a prime...
  • ZHOUBEISI
  • ZHOUBEISI
  • 2018-03-01 18:29:14
  • 11

LeetCode191. Number of 1 Bits

Write a function that takes an unsigned integer and returns the number of ’1' bits it has (also know...
  • qq_39910168
  • qq_39910168
  • 2018-02-28 22:53:55
  • 8

Leetcode#191. Number of 1 Bits

题目描述:写一个函数,输入一个无符号整数,输出这个整数二进制表示中有多少个 ’1‘ (该结果也被称为“Hamming weight”)。比如,32位整数 ‘11’ 的二进制表示为 0000000000...
  • sinat_20177327
  • sinat_20177327
  • 2018-03-25 11:17:46
  • 8

Codeforces 484A. Bits 贪心

A. Bits time limit per test 1 second memory limit per test 256 megabytes input sta...
  • u012797220
  • u012797220
  • 2014-11-07 18:41:06
  • 1056
收藏助手
不良信息举报
您举报文章:Prime Number of Set Bits in Binary Representation
举报原因:
原因补充:

(最多只允许输入30个字)