有害数是一个正整数,在其二进制表示形式中具有一个质数。第一个有害数字是3,因为3 =(11)(以二进制表示)和1 +1 = 2,这是一个质数。
有害数字的属性:
1.没有任何有害数也是2的幂,因为二进制形式的2的幂表示为1,后跟零。因此,1不被视为素数。
2.表格的每个数字 n> 0的+1是一个有害数,因为二进制形式的1的个数是2,即素数。
3.若干表格 –以p开头的1是一个有害的数字,称为Mersenne数。
首先打印n个有害数字的想法很简单。
对从1到n的每个数字进行跟踪。
1)计数当前编号中的设置位
2)如果设置的位数为素数,则打印当前编号。为此,我们使用简单的素数检查。
这是打印前25个有害数字的程序。
下面是上述方法的实现。
C++
// CPP program to print first n pernicious numbers
#include
using namespace std;
// function to check prime number
bool isPrime(int x)
{
if (x < 2)
return false;
for (int i = 2; i < x; i++) {
if (x % i == 0)
return false;
}
return true;
}
// Prints first n Pernicious numbers
void printPernicious(int n)
{
for (int i=1,count=0; count
Java
// Java program to print first
// n pernicious numbers
import java.util.*;
class GFG {
// function to count no of
// ones in binary representation
static int countSetBits(int n)
{
int count = 0;
while (n > 0)
{
n &= (n - 1) ;
count++;
}
return count;
}
// function to check prime number
static boolean isPrime(int x)
{
if (x < 2)
return false;
for (int i = 2; i < x; i++) {
if (x % i == 0)
return false;
}
return true;
}
// Prints first n Pernicious numbers
static void printPernicious(int n)
{
for (int i=1,count=0; count
Python3
# Python program to print
# first n pernicious numbers
# function to check
# prime number
def isPrime(x):
if x < 2:
return False
for i in range(2, x):
if not x % i:
return False
return True
# Prints first n Pernicious
# numbers
def printPernicious(n):
i, count = 1, 0
while count < n:
# "bin(i).count('1')" count
# no of ones in binary
# representation
if (isPrime(bin(i).count('1'))):
print(i, end=' ')
count += 1
i += 1
# Driver Code
n = 25
printPernicious(n)
# This code is contributed by Ansu Kumari
C#
// C#program to print first
// n pernicious numbers
using System;
class GFG
{
// function to count no of
// ones in binary representation
static int countSetBits(int n)
{
int count = 0;
while (n > 0)
{
n &= (n - 1) ;
count++;
}
return count;
}
// function to check prime number
static bool isPrime(int x)
{
if (x < 2)
return false;
for (int i = 2; i < x; i++) {
if (x % i == 0)
return false;
}
return true;
}
// Prints first n Pernicious numbers
static void printPernicious(int n)
{
for (int i=1,count=0; count
PHP
> 1;
}
return $count;
}
// Prints first n Pernicious numbers
function printPernicious($n)
{
for ($i = 1, $count = 0;
$count < $n; $i++)
{
//count no of ones in
// binary representation
if (isPrime(getBitCount($i)))
{
echo $i." ";
$count++;
}
}
}
// Driver code
$n = 25;
printPernicious($n);
// This code is contributed by mits
?>
Javascript
输出 :
3 5 6 7 9 10 11 12 13 14 17 18 19 20 21 22 24 25 26 28 31 33 34 35 36
参考 :
维基