In this blog I am provide you the code Smith numbers in java.

import java.util.Scanner;
import java.io.*;
public class smith
{
    public void findNumber()
    {
        int num,n,x,y,sumdigits=0,sumfactors=0;
        boolean flag;
        Scanner scan=new Scanner(System.in);
        System.out.print("Enter the number:");
        n=scan.nextInt();
        num=n;
        sumdigits=sumOfDigits(n);
        for(x=2;x<=n;x++)
        {
            if(n%x==0)
            {
                flag=isPrime(x);
                if(flag)
                {
                    y=x;
                    while(y>0)
                    {
                        sumfactors=sumfactors+y%10;
                        y=y/10;
                    }
                    n=n/x;
                    x--;
                }             }
        }
        if(sumdigits==sumfactors)
            System.out.println("\n"+num+ " is a smith number.");
        else
            System.out.println("\n"+num+ " is not a smith number.");
    }
    //to print digits of n and return their sum
    public int sumOfDigits(int n)
    {
        int rem, s=0;
        while(n>0)
        {
            rem=n%10;
            /*System.out.print(rem+" ");*/
            s=s+rem;
            n=n/10;
        }
        return s;
    }
    //to check i isprime or not
    public boolean isPrime(int n)
    {         int x;
        boolean flag=true;

        for(x=2;x< n;x++)
        {             if(n%x==0)
            {
                flag=false;
                break;
            }//if ends
        }//for ends
        return flag;
    }//isPrime ends
    //to call other methods
    public static void main(String args[])     {
        smith obj=new smith();
        obj.findNumber();
    }//main() ends
}//class ends

Output: -

  Modified On Sep-18-2014 01:24:18 PM

Leave Comment