Итак, моя задача: у меня есть число 100, и я должен вывести сумму цифр его факториала.
Итак, я написал код, нашел хороший способ суммирования цифр, но мой код не работает для числа 100. Я проверил на 10, и он отлично работает.Первый шаг, который пришел мне в голову, я должен изменить тип с int на что-то большее.Я знаю, что результат (факториала) будет огромным положительным числом, поэтому я выбираю ulong, но он все равно не работает.Здесь я проверил переполнение стека, и единственные ответы, которые я нашел, предлагали использовать BigInteger, но моя Visual Studio, похоже, этого не знает, и мне хотелось бы знать, ПОЧЕМУ ulong не работает.
Мой код:
class Program
{
static ulong factorial(ulong n) //finds the factorial of x
{
ulong fact = n;
for (ulong i=1; i<n; i++)
{
fact = fact * i;
}
return fact;
}//***
static ulong digitsum(ulong n) // sums the digits of n
{
ulong sum = 0;
while (n != 0)
{
sum += n % 10;
n /= 10;
}
return sum;
}//***
static void Main(string[] args)
{
ulong x = 100;
Console.WriteLine(digitsum(factorial(x)));
Console.ReadLine();
}
}