Untitled

 avatar
unknown
plain_text
4 days ago
1.2 kB
0
Indexable
19 → 1² + 9² = 1 + 81 = 82
82 → 8² + 2² = 64 + 4 = 68
68 → 6² + 8² = 36 + 64 = 100
100 → 1² + 0² + 0² = 1 (Happy Number)


2 → 2² = 4
4 → 4² = 16
16 → 1² + 6² = 1 + 36 = 37
37 → 3² + 7² = 9 + 49 = 58
58 → 5² + 8² = 25 + 64 = 89
89 → 8² + 9² = 64 + 81 = 145
145 → 1² + 4² + 5² = 1 + 16 + 25 = 42
42 → 4² + 2² = 16 + 4 = 20
20 → 2² + 0² = 4
4 → 16 (Cycle Detected)


public class HappyNumber {
  
    public static boolean isHappy(int n) {
        int slow = n, fast = n;
        
        do {
            slow = sumOfSquares(slow); // Move one step
            fast = sumOfSquares(sumOfSquares(fast)); // Move two steps
        } while (slow != fast);
        
        return slow == 1;
    }

    private static int sumOfSquares(int num) {
        int sum = 0;
        while (num > 0) {
            int digit = num % 10;
            sum += digit * digit;
            num /= 10;
        }
        return sum;
    }

    public static void main(String[] args) {
        System.out.println(isHappy(19)); // Output: true
        System.out.println(isHappy(2));  // Output: false
    }
}
Leave a Comment