Wszystkie zagadnienia: Algorytmy
podstawowy cyfrymodulomatura podstawowa z informatyki

Suma cyfr liczby

Suma cyfr liczby to wynik dodania wszystkich jej cyfr. Prosto, z animacją.

01

Opis

Suma cyfr liczby to po prostu wynik dodania wszystkich jej cyfr. Na przykład dla 1234 suma cyfr to 1 + 2 + 3 + 4, czyli 10.

Jak to policzyć w programie? Potrzebujemy dwóch prostych działań. Reszta z dzielenia przez 10 (n mod 10) zawsze daje ostatnią cyfrę liczby. Dzielenie bez reszty przez 10 (n div 10) tę ostatnią cyfrę usuwa. Bierzemy więc ostatnią cyfrę, dodajemy ją do sumy, usuwamy ją z liczby i powtarzamy, aż z liczby zostanie zero.

Dlaczego akurat przez 10? Bo liczby zapisujemy w systemie dziesiętnym. Gdybyśmy pracowali na zapisie dwójkowym, tak samo użylibyśmy mod 2 i div 2.

Na maturze: suma cyfr rzadko jest celem sama w sobie. Najczęściej to element większego zadania – na przykład sprawdzania, czy liczba dzieli się przez 3 albo przez 9 (dzieli się wtedy, gdy jej suma cyfr też się dzieli).

Wizualizacja

Prześledź krok po kroku, jak algorytm zdejmuje cyfry od prawej: podświetlona cyfra to reszta z dzielenia przez 10 (n mod 10), którą dodajemy do sumy, a potem obcinamy liczbę dzieleniem całkowitym (n div 10). Koniec, gdy z liczby zostanie 0.

1234
Suma cyfr0

Naciśnij „Krok", aby zdjąć ostatnią cyfrę, albo „Auto".

02

Pseudokod

funkcja suma_cyfr(n):
  suma ← 0

  dopóki n > 0:
    suma ← suma + (n mod 10)   // dodaj ostatnią cyfrę
    n ← n div 10               // usuń ostatnią cyfrę

  zwróć suma
03

Implementacja w Pythonie i C++

def suma_cyfr(n):
    """Zwraca sumę cyfr liczby n."""
    n = abs(n)  # na wszelki wypadek dla liczb ujemnych
    suma = 0

    while n > 0:
        suma += n % 10   # bierzemy ostatnią cyfrę
        n //= 10         # usuwamy ostatnią cyfrę

    return suma


# Przyklady uzycia
print(suma_cyfr(1234))   # Wynik: 10
print(suma_cyfr(99999))  # Wynik: 45
04

Najczęściej zadawane pytania

Co robi `n mod 10`?

Daje ostatnią cyfrę liczby, czyli resztę z dzielenia przez 10. Na przykład 1234 mod 10 to 4.

Co robi `n div 10`?

Usuwa ostatnią cyfrę – to dzielenie przez 10 bez reszty. Na przykład 1234 div 10 to 123.

Po co w pętli jest `n > 0`, a nie `n >= 0`?

Żeby pętla się skończyła, gdy zabraknie cyfr. Przy n >= 0 po dojściu do zera kręciłaby się bez końca.

Gdzie się to przydaje?

Najczęściej przy sprawdzaniu, czy liczba dzieli się przez 3 albo 9, oraz w wielu zadaniach maturalnych o cyfrach liczby.

05

Ćwiczenie

Policz sumę cyfr i wpisz wynik, potem kliknij Sprawdź.

Suma cyfr liczby 472 to , liczby 2025 to , a liczby 1000 to .

Uzupełnij tabelę:

LiczbaSuma cyfr
88
305
9999

Ostatnią cyfrę bierzemy działaniem , a usuwamy ją działaniem .

Złożoność obliczeniowa

CzasowaO(log n)
PamięciowaO(1)

Liczba kroków jest równa liczbie cyfr, a tych jest mniej więcej tyle, ile wynosi log z liczby – dlatego czas to O(log n). Dodatkowej pamięci prawie nie zużywamy (O(1)), bo trzymamy tylko sumę i skracaną liczbę.

Przećwicz w zadaniach maturalnych

Do tego hasła nie mamy jeszcze przypisanych pojedynczych zadań. Cały spis zadań maturalnych z tego działu jest tutaj:

Zadania z działu: Programowanie

↗

Powiązane zagadnienia