2

2

```
# check the numeric range of Python with huge factorials
# factorial(69) still checks out accurately! Has 98 digits in it!
# 171122452428141311372468338881272839092270544893520369393648040923257279754140647424000000000000000
# tested with Python24 vegaseat 01aug2005
def getFactorial(n):
"""returns the factorial of n"""
if n == 0:
return 1
else:
k = n * getFactorial(n-1)
return k
for k in range(1, 70):
print "factorial of", k,"=", getFactorial(k)
```

0

I didn't know Python could handle such big numbers natively. Cool stuff, particularly for cryptography I'm sure. I hit a wall at 999.

```
>>> getFactorial(999)
File "<stdin>", line 5, in g
File "<stdin>", line 5, in g
...
File "<stdin>", line 5, in g
RuntimeError: maximum recursion depth exceeded
```

Try this definition instead. It seems to be getting the same results as yours, but is non-recursive.

```
>>> def getFactorial(n):
... r = 1
... for x in range(n):
... r = r * (n + 1)
... return r
...
>>> getFactorial(100000)
(insert monster number here)L
```

0

i know this for a long time. lol

I think i had something x 10^500 or 10^5000 at one point.

1

There is a limit to recursions in Python,

find the limit with

sys.getrecursionlimit() --> usually 1000

Can be changed with

sys.setrecursionlimit(new_limit)

1

You could use an iterative version of the factorial for big numbers:

```
'''
>>> factorial(1000)
402387260077093773543702433923003985719374864210714632543799910429938512398629020592044208486969404800479988610197196058631666872994808558901323829669944590997424504087073759918823627727188732519779505950995276120874975462497043601418278094646496291056393887437886487337119181045825783647849977012476632889835955735432513185323958463075557409114262417474349347553428646576611667797396668820291207379143853719588249808126867838374559731746136085379534524221586593201928090878297308431392844403281231558611036976801357304216168747609675871348312025478589320767169132448426236131412508780208000261683151027341827977704784635868170164365024153691398281264810213092761244896359928705114964975419909342221566832572080821333186116811553615836546984046708975602900950537616475847728421889679646244945160765353408198901385442487984959953319101723355556602139450399736280750137837615307127761926849034352625200015888535147331611702103968175921510907788019393178114194545257223865541461062892187960223838971476088506276862967146674697562911234082439208160153780889893964518263243671616762179168909779911903754031274622289988005195444414282012187361745992642956581746628302955570299024324153181617210465832036786906117260158783520751516284225540265170483304226143974286933061690897968482590125458327168226458066526769958652682272807075781391858178889652208164348344825993266043367660176999612831860788386150279465955131156552036093988180612138558600301435694527224206344631797460594682573103790084024432438465657245014402821885252470935190620929023136493273497565513958720559654228749774011413346962715422845862377387538230483865688976461927383814900140767310446640259899490222221765904339901886018566526485061799702356193897017860040811889729918311021171229845901641921068884387121855646124960798722908519296819372388642614839657382291123125024186649353143970137428531926649875337218940694281434118520158014123344828015051399694290153483077644569099073152433278288269864602789864321139083506217095002597389863554277196742822248757586765752344220207573630569498825087968928162753848863396909959826280956121450994871701244516461260379029309120889086942028510640182154399457156805941872748998094254742173582401063677404595741785160829230135358081840096996372524230560855903700624271243416909004153690105933983835777939410970027753472000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000L
'''
```

Here's the version:

```
>>> def factorial(nr, prod = 1):
for i in range(nr): prod *= (i + 1)
return prod
```

**[Edit:]** Nvm, already posted this above, didn't see it.**[Edit2:]** Nvm the first edit, the factorial function provided above is wrong:

```
def getFactorial(n):
r = 1
for x in range(n):
r = r * (n + 1)
return r
```

it should be

```
def getFactorial(n):
r = 1
for x in range (n):
r = r * (x+1)
return r
```

*Edited 3 Years Ago by Lucaci Andrew*

0

If you want even larger numbers from a simple series then the Ackermann function is to factorials as factorials are to a simple count of integers.

1

The factorial function is part of the math module in later versions of Python:

```
''' math_factorial.py
tested with Python 2.7.3
'''
from math import factorial
for k in range(1, 101):
print("factorial of {} = {}".format(k, factorial(k)))
print(type(factorial(10))) # <type 'int'>
print(type(factorial(100))) # <type 'long'>
print(len(str(factorial(100)))) # 158
print(len(str(factorial(69)))) # 99
```

**Are you able to help answer this sponsored question?**

Questions asked by members who have earned a lot of community kudos are featured in order to give back and encourage quality replies.

Recommended Articles

I am currently creating a simulation of a pizza ordering system in object oriented program. I have some question. the instruction and guideline is long but I will try and cut it down a lot. the instruction is to create a program that simulate a pizza restaurant using ...

```
#include <stdio.h>
int main(void)
int movieChoice;
int seatNum;
int seatPlan[5][10] = { 0 };
int rows, cols;
char space;
void seatDisplay(int a[][10]);
void seatNew(int n[][10]);
void seatDisplay(int a[][10]) { //this function shows the seat plan
for (int i = 0; i<5; i++) {
for (int j = 0; j<10; j++) ...
```

I have this tree format.

```
> myapp->
> setup.py
> tests ->
> test_myapp.py
> myapp ->
> __init__.py
> myapp.py
```

And from test_myapp.py, I am calling: `from myapp import myapp`

and when I run`python setup.py test`

I am getting `No module named 'myapp'`