What is a Happy Number?
In recreational mathematics, a happy number is a number which eventually reaches 1 when replaced by the sum of the squares of its digits. This process is repeated until either the number equals 1 (at which point it becomes "happy") or it enters a cyclic loop that does not include 1 (at which point it is considered an "unhappy" or "sad" number).
The Happy Number Algorithm
- Take any positive integer.
- Calculate the square of each digit.
- Find the sum of these squares.
- Replace the original number with this new sum.
- Repeat steps 2–4 until the result is 1 or a cycle occurs.
Example: Is 19 a Happy Number?
Let's follow the sequence for the number 19:
- Step 1: 1² + 9² = 1 + 81 = 82
- Step 2: 8² + 2² = 64 + 4 = 68
- Step 3: 6² + 8² = 36 + 64 = 100
- Step 4: 1² + 0² + 0² = 1
Since the sequence ended in 1, 19 is a happy number.
Common Happy Numbers
The first few happy numbers under 100 are: 1, 7, 10, 13, 19, 23, 28, 31, 32, 44, 49, 68, 70, 79, 82, 86, 91, 94, 97, and 100.
function calculateHappyNumber() {
var inputElement = document.getElementById("inputNumber");
var num = parseInt(inputElement.value);
var resultArea = document.getElementById("resultArea");
var statusHeader = document.getElementById("statusHeader");
var sequencePath = document.getElementById("sequencePath");
if (isNaN(num) || num <= 0) {
alert("Please enter a valid positive integer.");
return;
}
var sequence = [num];
var seen = {};
var current = num;
var isHappy = false;
while (true) {
var digits = current.toString().split("");
var sum = 0;
for (var i = 0; i 500) break;
}
resultArea.style.display = "block";
sequencePath.innerText = "Sequence: " + sequence.join(" → ");
if (isHappy) {
resultArea.style.backgroundColor = "#e8f5e9";
resultArea.style.border = "1px solid #c8e6c9";
statusHeader.style.color = "#2e7d32";
statusHeader.innerText = "😊 " + num + " is a Happy Number!";
} else {
resultArea.style.backgroundColor = "#ffebee";
resultArea.style.border = "1px solid #ffcdd2";
statusHeader.style.color = "#c62828";
statusHeader.innerText = "😔 " + num + " is an Unhappy Number.";
}
}
@keyframes fadeIn {
from { opacity: 0; transform: translateY(-10px); }
to { opacity: 1; transform: translateY(0); }
}
#inputNumber::-webkit-inner-spin-button,
#inputNumber::-webkit-outer-spin-button {
-webkit-appearance: none;
margin: 0;
}