Question:
A Smith number is a composite number, the sum of whose digits is the sum of the digits of its prime factors obtained as a result of prime factorization (excluding 1). The first few such numbers are 4, 22, 27, 58, 85, 94, 121 ………………..
Examples:
1. 666
Prime factors are 2, 3, 3, and 37
Sum of the digits are (6+6+6) = 18
Sum of the digits of the factors (2+3+3+(3+7)) = 18
2. 4937775
Prime factors are 3, 5, 5, 65837
Sum of the digits are (4+9+3+7+7+7+5) = 42
Sum of the digits of the factors (3+5+5+(6+5+8+3+7)) = 42
Write a program to input a number and display whether the number is a Smith number or not.
Sample data:
Input 94 Output SMITH Number
Input 102 Output NOT SMITH Number
Input 666 Output SMITH Number
Input 999 Output NOT SMITH Number
Programming Code:
/** * The class Smith inputs a number and checks whether it is a Smith Number or not * @author : www.javaforschool.com * @Program Type : BlueJ Program - Java * @Question Year : ISC Practical 2008 Question 1 */ import java.io.*; class Smith { static BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); //function for finding sum of digits int sumDig(int n) { int s=0; while(n>0) { s=s+n%10; n=n/10; } return s; } //function for generating prime factors and finding their sum int sumPrimeFact(int n) { int i=2, sum=0; while(n>1) { if(n%i==0) { sum=sum+sumDig(i); //Here 'i' is the prime factor of 'n' and we are finding its sum n=n/i; } else i++; } return sum; } public static void main(String args[]) throws IOException { Smith ob=new Smith(); System.out.print("Enter a Number : "); int n=Integer.parseInt(br.readLine()); int a=ob.sumDig(n);// finding sum of digit int b=ob.sumPrimeFact(n); //finding sum of prime factors System.out.println("Sum of Digit = "+a); System.out.println("Sum of Prime Factor = "+b); if(a==b) System.out.print("It is a Smith Number"); else System.out.print("It is Not a Smith Number"); } }
Output:
1. Enter a Number : 94
Sum of Digit = 13
Sum of Prime Factor = 13
It is a Smith Number
2. Enter a Number : 102
Sum of Digit = 3
Sum of Prime Factor = 13
It is Not a Smith Number
3. Enter a Number : 4937775
Sum of Digit = 42
Sum of Prime Factor = 42
It is a Smith Number
sir when iam using scanner for checking smith
when iam writing
int n=ob.nextInt();
it showing error and saying
cannot find symbol variable- method.nextInt();
In the beginning of the program add:
import java.util.*;
If still it continues to show “Cannot find the Symbol…..” , then update your JDK…
Help full for students
Good for students+helpful to
its really a helpful site for school children