Работа с цифрами числа

Рейтинг: 0Ответов: 1Опубликовано: 05.03.2023

Задача:

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;
}

Ответы

▲ -1

Вот код решающий поставленную задачу:

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;
}