Coding Grandmaster ยท project 9 of 46 ยท premium, free for now
Digits and casting out nines
Write digit_sum(n) using % and //, and digital_root(n) that repeats digit_sum until one digit remains. Print both for 98765.
Learn
n % 10 gives the last digit and n // 10 removes it, so a loop can take a number apart one digit at a time. Repeating the digit sum until one digit is left gives the digital root. A famous fact: the digital root of a positive number is the same as its remainder when divided by 9 (with 9 instead of 0), which is how people checked sums by hand.
Your task
Write digit_sum(n) using % and //, and digital_root(n) that repeats digit_sum until one digit remains. Print both for 98765.
Stretch challenge
Check that digital_root(n) == (n - 1) % 9 + 1 for every n from 1 to 500.
Press Run to see what your program prints.
More in this module
Keep going in Coding Grandmaster
Euclid's shortcut
Write gcd_steps(a, b) returning (gcd, steps) where steps counts the remainder steps, and lcm(a, b). Print gcd_steps(48, 18) and lcm(4, 6).
Start โ8The sieve of Eratosthenes
Write primes_below(n) using a list of True/False flags (a sieve) that returns the list of primes less than n. Print how many primes there are below 100 and the last one.
Start โ10Powers in a flash
Write power_steps(base, exp) that returns (result, multiplications) using repeated squaring, and pow_mod(base, exp, m) that returns base ** exp % m the same way (without ever building the full power).
Start โ11Perfect numbers
Write divisor_sum(n) (the sum of proper divisors, found by looping d up to the square root and adding both d and n // d) and print the perfect numbers below 1000.
Start โ12Counting in other bases
Write to_base(n, base) returning the digits as text, using the string "0123456789ABCDEF". Print 10 in binary and 255 in hexadecimal.
Start โPractise the idea
๐งฉ Play Number Sequences
Spot the pattern and type the next number. Add, multiply, squares, Fibonacci and more.
FAQ
Digits and casting out nines: common questions
I am stuck. What can I do?
Press Hint for a nudge, read the message next to each goal, and compare your code with the lesson text. If you still need it, Show answer reveals a model solution. Try to type it yourself rather than copy it.
Does my work get saved?
Your ticks and XP are saved in this browser, and in your account if you log in. The code you type is not stored on a server.
Start a conversation
Enjoying coding? Meet a teacher.
Tell us the learner's age, country and what they would like to build, and we will suggest a class. A parent or guardian can make the enquiry.
- Tell us the learnerโs age or grade and goals
- Weโll suggest a suitable class or learning path
- Weโll confirm format, timing and fees with a parent or guardian
Play it, don't just read it
Write some code right now
Free games that need no sign-up. Pick one and play for five minutes.
Pick a game
- Predict the OutputRead a short Python program and choose what it prints. Then watch it runโฆPlay
- Code BuilderThe lines of a Python program are mixed up. Tap them into the rightโฆPlay
- Bug HunterA Python program prints the wrong answer. Find the one line with theโฆPlay
- Code JungleWrite real Python to guide Miko the monkey to every banana. 24 levels:โฆPlay