当前位置: 面试刷题>> 二进制表示中质数个计算置位 (经典算法题500道)


### 完整题目描述 题目:**二进制表示中质数个计算置位** 给定一个正整数 `n`,我们需要判断该整数的二进制表示中1的个数是否为质数。如果是质数,则返回 `true`;否则返回 `false`。 **注意**: 1. 质数是大于1的自然数,除了1和它本身以外不再有其他因数。 2. 1不是质数。 ### 示例 - 输入:`n = 15`,二进制表示为 `1111`,其中1的个数为4,4不是质数,输出:`false`。 - 输入:`n = 13`,二进制表示为 `1101`,其中1的个数为3,3是质数,输出:`true`。 ### PHP 示例代码 ```php function countBits($n) { $count = 0; while ($n) { $count += $n & 1; $n >>= 1; } return $count; } function isPrime($num) { if ($num <= 1) return false; if ($num <= 3) return true; if ($num % 2 == 0 || $num % 3 == 0) return false; $i = 5; while ($i * $i <= $num) { if ($num % $i == 0 || $num % ($i + 2) == 0) { return false; } $i += 6; } return true; } function isPrimeNumberOfBits($n) { $bitCount = countBits($n); return isPrime($bitCount); } // 测试 echo isPrimeNumberOfBits(15) ? 'true' : 'false'; // false echo "\n"; echo isPrimeNumberOfBits(13) ? 'true' : 'false'; // true ``` ### Python 示例代码 ```python def count_bits(n): count = 0 while n: count += n & 1 n >>= 1 return count def is_prime(num): if num <= 1: return False if num <= 3: return True if num % 2 == 0 or num % 3 == 0: return False i = 5 while i * i <= num: if num % i == 0 or num % (i + 2) == 0: return False i += 6 return True def is_prime_number_of_bits(n): bit_count = count_bits(n) return is_prime(bit_count) # 测试 print(is_prime_number_of_bits(15)) # False print(is_prime_number_of_bits(13)) # True ``` ### JavaScript 示例代码 ```javascript function countBits(n) { let count = 0; while (n) { count += n & 1; n >>= 1; } return count; } function isPrime(num) { if (num <= 1) return false; if (num <= 3) return true; if (num % 2 === 0 || num % 3 === 0) return false; for (let i = 5; i * i <= num; i += 6) { if (num % i === 0 || num % (i + 2) === 0) return false; } return true; } function isPrimeNumberOfBits(n) { const bitCount = countBits(n); return isPrime(bitCount); } // 测试 console.log(isPrimeNumberOfBits(15)); // false console.log(isPrimeNumberOfBits(13)); // true ``` **码小课网站中有更多相关内容分享给大家学习**,欢迎访问码小课网站深入学习更多算法和数据结构知识。
推荐面试题