Java >> Java tutorial >  >> Java

Java-program til at kontrollere Smith-nummer

I den forrige artikel har vi diskuteret Java-program til at tjekke mysterienummer

I denne artikel skal vi forstå, hvad Smith-nummer er, og hvordan vi kan kontrollere, om et tal er Smith eller ej i Java med eksempler.

Program for at kontrollere Smith-nummer

Smith-tal er tal, hvis sum af cifre af alle dets primfaktorer bortset fra 1 og summen af ​​dets cifre er ens.

Eksempel:

  • 85:Sum =8+5 =13; Prime Factors(5,17)

Summen af ​​cifre af dens primfaktorer =5+1+7 =13 Smith-tal

  • 999:Sum =9+9+9 =27; Prime Factors(3,3,3,37)

Summen af ​​cifre af dets primfaktorer =3+3+3+3+7 =19 Ikke et Smith-tal

I ovenstående eksempler er tallet 85 et Smith-tal, da dets sum af cifre og summen af ​​cifre af dets primfaktorer er ens, dvs. 13. 999 er dog ikke et Smith-tal, da begge numre er forskellige.

Hvis du er ny til Java og vil lære Java-kodningsfærdighederne for hurtigt. Prøv at øve kerneprogrammerne i Java ved hjælp af den tilgængelige liste over Java-baserede programmer.

Fremgangsmåde:

  1. Vi beder brugeren om at indtaste et nummer og gemme det .
  2. Så beregner vi primfaktorerne og tilføjer derefter deres cifre og gemmer dem. Derefter lægges cifrene i nummeret sammen.
  3. Hvis begge summer er lige store, siges tallet at være et Smith-tal.

Program:

Lad os se programmet for at forstå det mere klart.

import java.util.Scanner;
public class SmithNumber{
    public static void main(String args[])
    {
        //Tanuming the number as input from the user using scanner class
        Scanner scan = new Scanner(System.in);
        System.out.print("Enter a number : ");
        int num = scan.nextInt();

        // Checks whether the number is Smith number or not
        if(primeFactorSum(num)==digitSum(num))
        {
            System.out.println(num+" is a Smith number");
        }
        else
        {
            System.out.println(num+" is Not a Smith number");
        }

    }

    // Returns the sum of digits of the prime factors
    static int primeFactorSum(int num)  
    {  
        int i=2, sum=0;  
        while(num>1)  
        {  
            if(num%i==0)  
            {  
                sum=sum+digitSum(i);  
                num=num/i;  
            }  
            else  
            {  
                do  
                {  
                    i++;  
                }  
                while(!isPrime(i));  
            }  
        }  

        return sum;  
    }

    //function finds the sum of digits of the given numbers  
    static int digitSum(int num)  
    {    
        int sum=0;  
        while(num>0)  
        {     
        sum=sum+num%10;
        num=num/10;  
        }  
        //returns the sum of digits of the number  
        return sum;
    }

    //function checks if the factor is prime or not  
    static boolean isPrime(int num)  
    {  
        boolean flag=true;  
        int div=2;  
        while(div<Math.sqrt(num))  
        {  
            if(num%div==0)  
            {  
                flag=false;  
            }  
            div++;  
        }  
        return flag;  
    }  
    }

Output:

Case-1

Enter a number : 19
19 is a Smith number

Case-2

Enter a number : 699 
699 is Not a Smith number

Er du i tvivl om, hvordan du søger hjælp fra fageksperter og lærer Java-sproget? Gå med disse grundlæggende Java-programmeringseksempler og prøv at kode dem alle på egen hånd, og tjek derefter med den nøjagtige kode leveret af ekspertprogrammører.

Relaterede Java-programmer:

  • Java-program til at kontrollere Strontio-nummer
  • Java-program til at kontrollere Xylem og Phloem-nummer
  • Java-program til at kontrollere Abundant Number
  • Java-program til at kontrollere mangelfuldt nummer

Java tag