Problem: Happy Number
Let the sum of the square of the digits of a positive integer S0 be represented by S1. In a similar way, let the sum of the squares of the digits of S1 be represented by S2 and so on. If Si = 1 for some i ³ 1, then the original integer S0 is said to be Happy number. A number, which is not happy, is called Unhappy number.
Console:
Let the sum of the square of the digits of a positive integer S0 be represented by S1. In a similar way, let the sum of the squares of the digits of S1 be represented by S2 and so on. If Si = 1 for some i ³ 1, then the original integer S0 is said to be Happy number. A number, which is not happy, is called Unhappy number.
For example,
7 is a Happy number since 7 -> 49 -> 97 -> 130 -> 10 -> 1 and
4 is an Unhappy number since 4 -> 16 -> 37 -> 58 -> 89 -> 145 -> 42 -> 20 -> 4.
Solve:
7 is Happy number-why? cause-
Lets see the following code:
7 is Happy number-why? cause-
72 = 49
42 + 92 = 16 + 81 = 97
92 + 72 = 81 + 49 = 130
12 + 32 + 02 =
1+9+0 = 10
12 + 02 = 1
4 is Unhappy number because it never return to 0Lets see the following code:
// ADLabs import java.util.HashSet; import java.util.Scanner; import java.util.ArrayList; import java.util.Set; public class HappyNumber { // used to tell if a number has already been checked ArrayListchecked = new ArrayList (); public static void main(String[] args) { HappyNumber hn = new HappyNumber(); Scanner sc =new Scanner(System.in); System.out.println("Happy Number Checker (to Stop enter 0)"); System.out.print("Enter Number : "); int number = sc.nextInt(); //System.out.print(hn.sum_sq_digits(number)); // while (number>0) { if (hn.isHappy(number)) { System.out.println(number + " is Happy Number :)"); }else { System.out.println(number + " is UnHappy Number :("); } System.out.print("Enter Number : "); number = sc.nextInt(); } // sc.close(); } public boolean isHappy(int i) { Set check = new HashSet (); while (check.add(i)) //add and check database and return true { i = sum_sq_digits(i); //return sum of 2 System.out.print(i +" "); if (i==1) break; } System.out.println(""); return i==1; // if i=1 return true } public int sum_sq_digits(int number){ int sum = 0; while (number > 0) { sum += Math.pow(number % 10, 2); number /= 10; } return sum; } }
Console:
Console Output |