‹ Back to the paper
A class Perni has been defined to accept a positive integer in binary number system from the user…
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 1’s in it.]
Examples:
• 101 is a pernicious number as the number of 1’s in 101 = 2 and 2 is prime number.
• 10110 is a pernicious number as the number of 1’s in 10110 = 3 and 3 is prime number.
• 1111 is a NOT a pernicious number as the number of 1’s 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 member/instance variable:
num : to store a binary number
Methods / Member functions:
Perni( ) : constructor to initialise the data member with 0
void accept( ) : to accept a binary number (containing 0’s and 1’s only)
int countOne(int k) : to count and return the number of 1’s 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 functions accordingly to enable the task.
Answer
Answer
AIimport java.util.Scanner;
class Perni
{
String num;
Perni()
{
num = "0";
}
void accept()
{
Scanner sc = new Scanner(System.in);
System.out.print("Enter a binary number: ");
num = sc.next();
}
int countOne(int k)
{
if (k == 0)
return 0;
return (k % 10) + countOne(k / 10);
}
void check()
{
int k = Integer.parseInt(num);
int count = countOne(k);
boolean prime = (count > 1);
for (int i = 2; i * i <= count && prime; i++)
{
if (count % i == 0)
prime = false;
}
if (prime)
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();
}
}Explanation: accept() reads the binary number as a String (to allow digits like 1010 to be parsed digit-wise) and converts it with Integer.parseInt so countOne() can extract digits by %10/10. countOne(k) recursively adds up the digits of k (which, since k only has 0s and 1s, gives the count of 1's). check() then tests whether that count is prime and prints the appropriate message. Tested: 101 -> Pernicious (2 ones), 10110 -> Pernicious (3 ones), 1111 -> NOT Pernicious (4 ones).From ISC 2025 Computer Science Paper 1, question 6.