=>PYTHONTEX#py#default#default#0#code#####20#
def decompose (n , table = False):
    factors_list = []
    i = 2
    val = n
    while n>1:
        exposant = 0
        while n%i == 0:
            exposant = exposant + 1
            n = n/i
        if exposant != 0:
            factors_list.append([i,exposant])
        i = i+1

    if table == False:
        decomp = str(factors_list[0][0]) + '^' + str(factors_list[0][1])
        for i in range(1,len(factors_list)):
            if factors_list[i][1] != 0:
                decomp = decomp + '\\times' + str(factors_list[i][0])+'^'+str(factors_list[i][1])
        return '\\ensuremath{' + decomp + '}'
    else:
        result = '\\begin{tabular}{r|l}'
        n = val
        for prime in factors_list:
            for f in range(prime[1]):
                result = result+str(n)+'&'+str(prime[0])+'\\\\'
                n = n//prime[0]
        return result + '1&\\\\\\end{tabular}'
=>PYTHONTEX#py#default#default#1#code#####56#
def simpsqrt(n):
    if n**0.5 == int( n**0.5 ):
        return int( n**0.5 )
    else:
        a , b = 1 , n
        for k in range(2,int(n**0.5)):
            if b % (k*k) == 0: # si k² divise n
                a = k
                b = b // (k*k)

        if a == 1 and  b != 1:
            return '\\ensuremath{\\sqrt{' + str(b) + '}}'
        else:
            return '\\ensuremath{' + str(a) + '\\sqrt{' + str(b) + '}}'
=>PYTHONTEX#py#default#default#2#code#####78#
from math import *
=>PYTHONTEX#py#default#default#3#code#####88#
def simpfrac(a,b,displaystyle=False):
    d = gcd(a,b)
    num , denom = a // d , b // d
    if denom !=1:
        if displaystyle == True:
            display = 'd'
        else:
            display = ''
        return '\\ensuremath{\\' + display + 'frac{' + str(num) + '}{' + str(denom) + '}}'
    else:
        return num
=>PYTHONTEX#py#default#default#4#code#####107#
from scipy.integrate import quad
def integ(f,a,b,marge=False,dec=20,decm=10):
    r , m = quad(f , a , b) # r = résultat ,  m = marge d'erreur
    # on vérifie si la partie décimal du résultat comporte trop de zéros
    p = str(r).find('.')
    partie_decimale = str(r)[p+1:]
    longueur = len(partie_decimale)
    n = partie_decimale.count('0')
    if n > longueur/4:
        r = float( int(r) )
    # suite
    if marge == False:
        if str(round(r,dec))[-2:] == '.0':
            return '\\ensuremath{\\numprint{' + str(int(round(r,dec))) + '}}'
        else:
            return '\\ensuremath{\\numprint{' + str(round(r,dec)).replace('.',',') + '}}'
    else:
        e = str(m)[-3:]
        nb = str(m)[:decm+2].replace('.',',')
        return '\\ensuremath{\\numprint{' + str(round(r,dec)).replace('.',',') + '}\\text{ (avec une marge d\'erreur de }\\numprint{' + nb + '}\\times10^{' + e + '})}'
=>PYTHONTEX#py#default#default#5#code#####147#
def factorial(n,text=True):
    if n == 0 or n == 1:
        return 1
    else:
        f = 1
        for i in range(2,n+1):
            f *= i
    if text:
        return '\\numprint{' + str(f) + '}'
    else:
        return f

def binom(n,k,text=True):
    if text:
        return '\\numprint{' + str( factorial(n,False) // (factorial(k,False) * factorial(n-k,False)) ) + '}'
    else:
        return factorial(n,False) // (factorial(k,False) * factorial(n-k,False))

def binomial(n,p,k,dec=3,text=True):
    if text:
        return '\\numprint{'+str(round(binom(n,k,False) * (p ** k) * (1-p)**(n-k) , dec)).replace('.',',')+'}'
    else:
        return round(binom(n,k,False) * (p ** k) * (1-p)**(n-k) , dec)
	
def binomialcdf(n,p,k,dec=3,text=True):
    s = 0
    for i in range(k+1):
        s += binomial(n,p,i,dec,text=False)
    if text:
        return '\\numprint{' + str(round(s,dec)).replace('.',',') + '}'
    else:
        return round(s,dec)
	
def binomialcdftable(n,p,dec=5,seuil=0,opacity=20):
	t = '\\begin{longtable}{|c|c|}\\hline\\rowcolor{\\colorbinomialcdftable}\\textcolor{\\colorhead}{$\\pmb{k}$} & \\textcolor{\\colorhead}{$\\pmb{P(X \leqslant k)}$}\\\\\\hline'
	for k in range(n+1):
		colorline = ''
		if seuil != 0:
			delta = (1 - seuil)/2
			if k > 0 and binomialcdf(n,p,k-1,dec,text=False) < delta and binomialcdf(n,p,k,dec,text=False) > delta:
				colorline = '\\rowcolor{\\colorbinomialcdftable!'+str(opacity)+'}'
			if binomialcdf(n,p,k-1,dec,text=False) < 1-delta and binomialcdf(n,p,k,dec,text=False) > 1-delta:
				colorline = '\\rowcolor{\\colorbinomialcdftable!'+str(opacity)+'}'
		t += colorline + str(k) + ' & \\numprint{' + str( round(binomialcdf(n,p,k,dec,text=False),dec) ).replace('.',',') + '}\\\\\\hline'
	t += '\\end{longtable}'
	return t
	
def intfluct(n,p,seuil=0.95,freq = False,dec=4):
	a , b = 0 , n
	for k in range(n+1):
		delta = (1 - seuil)/2
		if k > 0 and binomialcdf(n,p,k-1,text=False) < delta and binomialcdf(n,p,k,text=False) > delta:
			a = k
		if binomialcdf(n,p,k-1,text=False) < 1-delta and binomialcdf(n,p,k,text=False) > 1-delta:
			b = k
	if freq:
		return '[\\numprint{' + str(round(a/n,dec)).replace('.',',') + '}\;;\;\\numprint{' + str(round(b/n,dec)).replace('.',',') + '}]'
	else:
		return '[\\numprint{' + str(a) + '}\;;\;\\numprint{' + str(b) + '}]'
=>PYTHONTEX#py#default#default#6#i#####98#
decompose(120,True)
=>PYTHONTEX#py#default#default#7#i#####109#
decompose(120,False)
=>PYTHONTEX#py#default#default#8#i#####124#
simpsqrt(147)
=>PYTHONTEX#py#default#default#9#i#####125#
simpsqrt(25)
=>PYTHONTEX#py#default#default#10#i#####137#
gcd(145,25)
=>PYTHONTEX#py#default#default#11#i#####150#
simpfrac(145,25)
=>PYTHONTEX#py#default#default#12#i#####152#
simpfrac(175,55,True)
=>PYTHONTEX#py#default#default#13#i#####173#
integ(exp,0,1)
=>PYTHONTEX#py#default#default#14#i#####174#
integ(exp,0,1,True,dec=5,decm=5)
=>PYTHONTEX#py#default#default#15#i#####175#
integ(lambda x: sqrt(x),0,1,dec=3)
=>PYTHONTEX#py#default#default#16#i#####176#
integ(lambda x: exp(-x),0,inf,dec=0)
=>PYTHONTEX#py#default#default#17#i#####212#
binomial(10,0.31,3)
=>PYTHONTEX#py#default#default#18#i#####213#
binomial(10,0.31,5,dec=10)
=>PYTHONTEX#py#default#default#19#i#####230#
binomialcdf(10,0.31,3)
=>PYTHONTEX#py#default#default#20#i#####231#
binomialcdf(10,0.31,5,dec=10)
=>PYTHONTEX#py#default#default#21#i#####246#
binomialcdftable(50,0.31,dec=5,seuil=0.95,opacity=40)
=>PYTHONTEX#py#default#default#22#i#####268#
intfluct(50,0.31)
=>PYTHONTEX#py#default#default#23#i#####269#
intfluct(50,0.31,freq = True)
=>PYTHONTEX#py#default#default#24#i#####284#
binom(15,7)
=>PYTHONTEX#py#default#default#25#i#####294#
factorial(12)
=>PYTHONTEX:SETTINGS#
version=0.18
outputdir=pythontex-files-pythontex-tools
workingdir=.
workingdirset=false
gobble=none
rerun=default
hashdependencies=default
makestderr=false
stderrfilename=full
keeptemps=none
pyfuture=default
pyconfuture=none
pygments=true
pygglobal=:GLOBAL||
fvextfile=-1
pyconbanner=none
pyconfilename=stdin
depythontex=false
pygfamily=py|python3|
pygfamily=pycon|pycon|
pygfamily=sympy|python3|
pygfamily=sympycon|pycon|
pygfamily=pylab|python3|
pygfamily=pylabcon|pycon|
