Cifra de control a unui număr se obține efectuând suma cifrelor sale, apoi suma cifrelor acestei sume, până când suma obținută este un număr format dintr-o singură cifră. Această ultimă cifră poartă numele de cifră de control.
Exemplu: Cifra de control \((cc)\) a numărului \(n= 4568248\):
\(cc(4568258)= cc(38)=cc(11)=2\).
Secvență de implementare C++:
while (n>9) { s=0; while (n>0) { s+=n%10; n/=10; } n=s; }
Algoritmul prezentat este intuitiv, ușor de înțeles și contribuie la dezvoltarea gândirii algoritmice.
Tot pentru calcularea cifrei de control se poate folosi și următoarea metodă: se trunchiază numărul prin eliminarea ultimei cifre apoi se adună cu aceasta până se obține un număr format dintr-o singură cifră.
Exemplu:
\(n=4568258\)
\(n=456825+8=456833\)
\(n=45683+3=45686\)
\(n=4568+6=4574\)
\(n=457+4=461\)
\(n=46+1=47\)
\(n=4+7=11\)
\(n=1+1=2\)
Secvența de implementare C++:
while(n>9) { n=n/10+n%10; }
În ambele cazuri timpul de execuție depinde de numărul de cifre ale numărului și de valorile acestora.
Pornind de la criteriul de divizibilitate cu 9
, un număr se divide cu 9
dacă suma cifrelor sale este multiplu de 9
și cum cifra cea mai mare în baza 10
este 9
, putem afla cifra de control calculând restul împărțirii numărului la 9
. Dacă restul este 0
atunci cifra de control este 9
, altfel este acel rest.
Secvența de implementare C++:
r=n%9; if (r==0) cc = 9; else cc = r;
În acest caz numărul de operații elementare nu mai depinde de valoarea lui n
.