Member 13652215 Ответов: 1

Следующий код используется для нахождения факториала заданного числа, но не может найти факториал 100, но прекрасно работает с числами меньше 5!


Этот код находит факториал для заданного числа, но этот код способен найти факториал только для меньших чисел, когда большие числа, такие как 100 или более, показывают ноль, а выход такой: "факториал 100 равен 0", не могли бы вы исправить этот код для меня.

Что я уже пробовал:

#include<stdio.h>
unsigned long long factorial(unsigned long long x);
int main(void)
{
     unsigned long long a=100, fact;
     
     fact= factorial(a);
     
     printf("the factorial of %llu is %llu",a,fact);
}

unsigned long long factorial(unsigned long long x)
{
            unsigned long long f;
	if(x==1)
	return (1);
	
	else
	
	f= x*factorial(x-1);
	return (f);
}

F-ES Sitecore

Вероятно, потому, что unsigned long недостаточно велик, чтобы вместить 100!

1 Ответов

Рейтинг:
2

Thomas Daniels

То максимальное значение unsigned long long[^] is 264-1. 100! факториал намного больше, чем это.