Как быстро найти остаток от суммы цифр?
Если первым параметром дать большое число, то программа выполняется очень долго.
А если вместо суммирования чисел воспользоваться формулой суммы арифметической прогрессии n * (n + 1) / 2 ?
Насколько велико "большое число"?
(1+2+...+n)%k = (n*(n+1)/2)%k 
= ((n/2)%k * (n+1)%k)%k, для чётных n
= (n%k * ((n+1)/2)%k)%k, для нечётных n