📜  有害号码

📅  最后修改于: 2021-05-04 10:25:22             🧑  作者: Mango

有害数是一个正整数,在其二进制表示形式中具有一个质数。第一个有害数字是3,因为3 =(11)(以二进制表示)和1 +1 = 2,这是一个质数。
有害数字的属性:
1.没有任何有害数也是2的幂,因为二进制形式的2的幂表示为1,后跟零。因此,1不被视为素数。
2.表格的每个数字2^n  n> 0的+1是一个有害数,因为二进制形式的1的个数是2,即素数。
3.若干表格2^p  –以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

参考 :
维基