Menu
CoddyTech

Happy Number

Bắt đầu với một số nguyên dương n rồi thay nó bằng tổng bình phương các chữ số của nó, lặp đi lặp lại. Ví dụ, 12 trở thành 1² + 2² = 5. Nếu quá trình này đạt đến 1, thì n là số hạnh phúc; nếu không, nó sẽ lặp mãi qua các số không bao giờ gồm 1. Trả về true nếu n là số hạnh phúc và false nếu không phải.

Hàm

isHappy(n: integer) → boolean
ninteger
số nguyên dương cần kiểm tra
Trả vềboolean
đúng nếu lặp lại phép tính tổng bình phương các chữ số cho đến khi được 1, sai nếu phép tính lặp vô hạn

Ràng buộc

  • 1 ≤ n ≤ 231-1

Ví dụ

Đầu vào
n = 7
Đầu ra
true
Giải thích
7 trở thành 49, sau đó 4² + 9² = 97, rồi 130, rồi 10, rồi 1. Quá trình đạt đến 1, nên 7 là số hạnh phúc.
challenge icon

Câu hỏi mở rộng

Làm thế nào để đếm nhanh các số hạnh phúc từ 1 đến 10^6, tái sử dụng kết quả cho các số nhỏ hơn 1000 thay vì bắt đầu lại từ đầu với từng số?

Đặt lại code
def isHappy(n):
    # Viết code ở đây

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

n = 7

Đầu ra mong đợi

true