A positive whole number 'n' that has 'd'
number of digits is squared and split into 2 pieces, a right hand piece that
has 'd' digits and a left hand piece that has remaining 'd' or 'd-1' digits. If
sum of the pieces is equal to the number then it’s a kaprekar number. The first
few Kaprekar numbers are: 9, 45, 297…..
For example 297 is a kaprekar number
because:
2972 =88209, right hand piece
of 88209=209 and left hand piece of 88209=88
Sum=209+88=297 , i.e. equal to the
number.
Given the two positive integers p and q,
where p < q. Write a program to determine how many kaprekar numbers are
there in the range between 'p' and 'q'(both inclusive )and output them.
The input contains two positive integers
p and q. Assume p<5000 and q<5000. You are to output the number of
kaprekar numbers in the specified range along with their values in the format
specified below:
SAMPLE DATA:
INPUT: p=1
Q=1000
OUTPUT: THE
KAPREKAR NUMBERS ARE:
1,
9, 45, 55, 99, 297, 999
FREQUENCY
OF KAPREKAR NUMBERS IS:8
Solution:-
import java.util.*;
public class Kaprekar
{
public static void main(String args[])
{
Scanner sc=new Scanner(System.in);
System.out.print("Enter the lower limit:");
int p=sc.nextInt();
System.out.print("Enter the upper limit:");
int q=sc.nextInt();
if(q<p)
System.out.println("INVALID INPUT");
else
{
int count=0;
System.out.println("THE
KAPREKAR NUMBERS ARE:-");
for(int i=p;i<=q;i++) //checking between the limits
{
String s=""+i;
int d=s.length();
int sq=i*i;
int
rd=(int)(sq%(Math.pow(10,d))); //finding right-hand
piece
int
ld=(int)(sq/(Math.pow(10,d))); //finding left-hand
piece
if(i==(rd+ld))
{
if(count==0)
System.out.print(i);
else
System.out.print(","+i);
count++;
}
}
System.out.println();
System.out.println("FREQUENCY OF KAPREKAR NUMBERS IS:"+count);
}
}
}
No comments:
Post a Comment