Факториал и С

Автор: Stydr Дата: 13.11.2003 03:57 Здравствуйте.
Извините, я новичек в OpenSource мире и С Улыбка
Я не знаю как вычислять факториал в C. Помогите пожалуйста! Если не затруднит, то покажите пожалуйста наглядный пример вычисления 100!/8!*(92!) и вывод на дисплей в С.
Re: Факториал и С 13.11.2003 09:46Eudgen int factorial(int n){
if(n>1)
{
//Вызываем функцию из себя самой.
return n*factorial(n-1);
}
else
{
//Факториал 1 равен 1.
return 1;
}
}

Есть подозрение, что может не хватить разрядности при вычислении 100!/8!*(92!). Надо сократить 100! и 92!, тогда все будет намного проще.
Re: Факториал и С 15.11.2003 17:26ave В вашем случае лучше воспользоваться библиотекой GNU MP (если конечно вам не задали решить эту задачу собственными силами ;-)).

Пример:

fact.c
---
#include <stdio.h>
#include <gmp.h>

int main()
{
mpz_t a, b, c, result;

mpz_init(a);
mpz_init(b);
mpz_init(c);
mpz_init(result);

mpz_fac_ui(a, 100);
mpz_fac_ui(b, 8);
mpz_fac_ui(c, 92);

mpz_div(result, a, b);
mpz_mul(result, result, c);

gmp_printf ("%Zd ", result);

return 0;
}
---

сборка:
---
gcc -lgmp -o fact fact.c
---

запускаем ./fact, получаем:
---
2879042931161799546124564118459114021312801783173956715899405267923885
4752089970858980850665356320012158694655304172931680579103011392984009
1080576674154424736041674638307019948479486930886690992683075898748860
6721279267464129230257650781954059303649280000000000000000000000000000
0000000000000000
---

Этот же результат можно наблюдать здесь: [swox.com]

Для внеклассного чтения: info gmp, [www.swox.com]
Re: Факториал и С 16.11.2003 07:25Stydr Спасибо.
Мне это и требовалось.
RSS-материал