Работа с цифрами числа
Задача:
Write a function, persistence, that takes in a positive parameter num and returns its multiplicative persistence, which is the number of times you must multiply the digits in num until you reach a single digit. Example:
39 → 3 (because 3 * 9 = 27, 2 * 7 = 14, 1*4 = 4 and 4 has only one digit)
Моя идея такова: до тех пор, пока произведение цифр числа больше или равно 10 мы дробим число на цифры, записывая их в List<T>
; затем перемножаем цифры, сохраняя результат в переменную, и, если он меньше 10, - выходим из цикла.
Мой код который работает только с int
параметром number
, а должен работать с long
и я не знаю как это сделать:
private static int Persistence(long number)
{
int numberOfSteps = 0;
List<int> digits = new List<int>();
while (number >= 10)
{
int product = 1;
while (number > 0)
{
digits.Add((int)(number % 10));
number /= 10;
}
foreach (var num in digits)
{
product *= num;
}
number = product;
numberOfSteps++;
digits = new List<int>();
}
return numberOfSteps;
}
Источник: Stack Overflow на русском