Problem pierwiastek n tego stopnia z liczby n

1

Witam,
mam problem z kodem

 #include <stdio.h>
#include <math.h>
double silnia(double);
double n,p;
int main ()
{
n = 1000;
silnia(n);
double x=silnia(n);
p = pow(x,(1/1000.0));
printf("Pierwiastek 1000 stopnia z 1000! to: ");
printf("%f", p);
return 0;
}
double silnia(double n)
{
if (n==0)
return (1);
else
return (silnia(n-1)*n);
}

możecie podpowiedzieć co tu jest źle?

7

Silnia z 21 to jest 20 cyfrowa liczba która jest najwiekszą liczbą którą pomieści long long int (int_64). Czy ty wiesz ile to jest 1000 silnia?
około 4*10^2567
Przykro mi ale zmienna która mogłaby pomieścić taką liczbę potrzebowałaby jakieś 8000 bitów czyli 1000 bajtów, czyli 1 kilobajt.

1

Mam do napisania program liczący pierwiastek 1000 stopnia z 1000! silnia jedyne co mi przyszło do głowy to podnieść 1000! do potęgi 1/1000 może jakieś inne sugestie jak mogę rozwiązać to zadanie ?

3

Powinieneś zauważyć, że \sqrt[n]{n!} = \sqrt[n]{1\cdot 2\cdot\ldots\cdot n} = \prod_{k=1}^{n}\sqrt[n]{k}

0

Dzięki wielkie miłego dnia.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0