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.
Solution:
import java.util.Scanner;
class Perni
{
int num;
Perni()
{
num=0;
}
void accept(){
Scanner sc=new Scanner(System.in);
System.out.println("Enter a binary number:");
num = sc.nextInt();
}
int countOne(int k)
{
if(k==0)
return 0;
if(k%10==1)
return 1+countOne(k/10);
return countOne(k/10);
}
void check(){
int n = countOne(num);
int c=0; //counter for prime check
for(int i=1;i<=n;i++){
if(n%i==0)
c=c+1;
}
if(c==2)
System.out.println(num+" is a pernicious number");
else
System.out.println(num+" is not a pernicious number");
}
public static void main(){
Perni ob = new Perni();
ob.accept();
ob.check();
}
}