Алгоритм для подведения итогов цифры?

Я ищу алгоритм для подведения итогов Цифры. Позвольте мне обрисовать в общих чертах основной принцип:

Скажите, что у Вас есть число: 18268.

1 + 8 + 2 + 6 + 8 = 25

2 + 5 = 7

И 7 наше заключительное число. Это в основном добавляет каждое количество целого числа, пока мы не переходим к синглу (также известный как 'ядро') цифра. Это часто используется numerologists.

Я ищу алгоритм (не должен быть язык в-конкретном) для этого. Я искал Google в течение прошлого часа с условиями такой как digit sum algorithm и этажерка, но не получила подходящих результатов.

12
задан TylerH 6 June 2018 в 19:38
поделиться

5 ответов

Поскольку 10-1 = 9, небольшая теория чисел скажет вам, что окончательный ответ - просто n mod 9. Вот код:

ans = n%9;
if(ans==0 && n>0) ans=9; 
return ans;

Пример: 18268% 9 равно 7. (См. Также: Изгнание девяток .)

31
ответ дан 2 December 2019 в 04:02
поделиться
int number = 18268;
int total = 0;

while(number > 0)
{
   total += number % 10;
   total = total%10;
   number /= 10;
}
0
ответ дан 2 December 2019 в 04:02
поделиться
  1. Измените целое число на 10.
  2. Добавьте число в массив.
  3. Добавьте весь массив.
1
ответ дан 2 December 2019 в 04:02
поделиться

Не работает с отрицательными числами, но я не знаю, как бы вы с этим справились. Вы также можете изменить f (x) на итеративный:

sum( x ) =
    while ( ( x = f( x ) ) >= 10 );
    return x;

f( x ) = 
    if ( x >= 10 ) return f( x / 10 ) + x % 10
    return x

Вы также можете воспользоваться преимуществами теории чисел, получив это f (x) :

f( x ) =
    if ( x == 0 ) return 0
    return x % 9
2
ответ дан 2 December 2019 в 04:02
поделиться

Я бы попробовал следующее:

int number = 18268;
int core = number;
int total = 0;

while(core > 10)
{
   total = 0;
   number = core;
   while(number > 0)
   {
      total += number % 10;
      number /= 10;
   }

   core = total;
}
3
ответ дан 2 December 2019 в 04:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: