Menu
CoddyTech

Happy Number

התחל ממספר שלם חיובי n והחלף אותו בסכום ריבועי הספרות שלו, שוב ושוב. לדוגמה, 12 הופך ל־1² + 2² = 5. אם התהליך מגיע ל־1, n הוא מספר שמח; אחרת הוא חוזר שוב ושוב במסלול מעגלי דרך מספרים שאינם כוללים אף פעם את 1. החזר true אם n הוא מספר שמח ו־false אם לא.

פונקציה

isHappy(n: integer) → boolean
ninteger
המספר השלם החיובי לבדיקה
מחזירהboolean
true אם חזרה על חישוב סכום ריבועי הספרות מגיעה ל-1, false אם היא נכנסת ללולאה אינסופית

אילוצים

  • 1 ≤ n ≤ 231-1

דוגמאות

קלט
n = 7
פלט
true
הסבר
7 הופך ל־49, ואז 4² + 9² = 97, ואז 130, ואז 10, ואז 1. התהליך מגיע ל־1, ולכן 7 הוא מספר שמח.

lock icon+16 בדיקות נסתרות בשליחה

challenge icon

שאלת המשך

איך הייתם סופרים במהירות את המספרים השמחים מ-1 עד 10^6, תוך שימוש חוזר בתשובות עבור מספרים שמתחת ל-1000 במקום להתחיל את החישוב מחדש עבור כל מספר?

איפוס הקוד
def isHappy(n):
    # כתבו כאן קוד
מקרי בדיקה

מקרה 1

מקרה 2

מקרה 3

קלט

n = 7

צפוי

true