Pernicious Number in Java | ISC Computer Science 2025 Theory

A class Perni has been defined to accept a positive integer in binary number system from the user and display if it is a Pernicious number or not.

A pernicious number is a binary number that has minimum of two digits and has prime number of 1s in it.

Examples:

  • 101 is a pernicious number as the number of 1s in 101 = 2 and 2 is prime number.
  • 10110 is a pernicious number as the number of 1s in 10110 = 3 and 3 is prime number.
  • 1111 is NOT a pernicious number as the number of 1s in 1111 = 4 and 4 is NOT a prime number.

The details of the members of the class are given below:

Class name: Perni
Data members/instance variables:
num: to store a binary number
Methods/Member functions:
Perni(): constructor to initialize the data member with 0
void accept(): to accept a binary number (containing 0s and 1s only)
int countOne(int k): to count and return the number of 1s in ‘k’ using recursive technique
void check(): to check whether the given number is a pernicious number by invoking the function countOne() and to display an appropriate message

Specify the class Perni giving the details of the constructor, void accept(), int countOne(int) and void check(). Define a main() function to create an object and call the function accordingly to enable the task.

import java.util.Scanner;
class Perni{
    int num;
    public Perni(){
        num = 0;
    }
    public void accept(){
        Scanner in = new Scanner(System.in);
        System.out.print("Enter a binary number: ");
        num = Integer.parseInt(in.nextLine());
        String s = String.valueOf(num);
        s = s.replace("0", "");
        s = s.replace("1", "");
        if(s.length() != 0){
            System.out.println("Invalid binary number!");
            System.exit(0);
        }
    }
    public int countOne(int k){
        if(k == 0)
            return 0;
        int d = k % 10;
        if(d == 1)
            return 1 + countOne(k / 10);
        return countOne(k / 10);
    }
    public void check(){
        int count = countOne(num);
        int f = 0;
        for(int i = 1; i <= count; i++){
            if(count % i == 0)
                f++;
        }
        if(f == 2)
            System.out.println(num + " is a pernicious number!");
        else
            System.out.println(num + " is not a pernicious number.");
    }
    public static void main(String[] args){
        Perni obj = new Perni();
        obj.accept();
        obj.check();
    }
}