def Chudnovsky(n:int=100, prec:int=100) -> Decimal: # https://en.wikipedia.org/wiki/Chudnovsky_algorithm """ parameter int n is for rounds of iteration as n increses time uses for computing increses also """ getcontext().prec = prec sum = Decimal(0.0) for i in range(n): top = factorial(6*i)*(545140134*i+13591409) bottom = factorial(3*i)*factorial(i)**3*(-262537412640768000)**i sum = sum + Decimal(top)/Decimal(bottom) return Decimal(426880)*Decimal(10005).sqrt() / sum
def cs(coins,args): #Compare to Schurs start = 1 step = 1 iterations = int(args[0]) without = lc(coins,[start,step,iterations]).split("\n")[0] xAxis = list(range(1,1+iterations)) yAxis = [] productOfCoins = 1 for i in range(0,len(coins)): productOfCoins*=coins[i] firstTerm = 1/(factorial(len(coins)-1)*productOfCoins) degree = len(coins)-1 for i in xAxis: yAxis.append(getChange(i,coins) - i**degree*firstTerm) reg = calcRegression(xAxis,yAxis,degree-1)[0] for i in reg: i = round(i,PRECISION) equation = str(round(firstTerm,PRECISION))+"x^"+str(degree) + " " for i in range(0,len(reg)): equation+=str(round(reg[i],5))+"x^"+str(degree-(1+i)) equation+=" " return [without,equation]
def Ramanujan(n:int=100, prec:int=100) -> Decimal: # Ramanujan's formulae """ parameter int n is for rounds of iteration as n increses time uses for computing is longer """ getcontext().prec = prec sum = Decimal(0.0) first = Decimal((2.0*pow(2.0,(1/2)))/9801.0) for k in range(n): second = Decimal(factorial(4*k)) third = Decimal(1103.0 + 26390.0*k) forth = Decimal(pow(factorial(k), 4.0)) fifth = Decimal(pow(396.0,(4.0*k))) sum = sum + (second*third)/(forth*fifth) sum = sum * first return Decimal(1/sum) # can approximate around 15 decimal digit
def main(): # We know how to calculate the number of permutations using factorial. # Instead of forming every permutation, we just skip them in chunks using # factorial calculations. digits = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] permutation = [] count = 0 while digits: for i in range(len(digits)): permutations = factorial(len(digits) - 1) if count + permutations >= 1000000: permutation.append(digits[i]) digits = digits[:i] + digits[i + 1:] break count += permutations print("".join(permutation))
def problem_20(): return digits_sum(factorial(100))
def fact_digits(x): return sum(factorial(i) for i in digits(x))
def p_lineage( population ): return c_lineage( population ) / float( util.factorial( len( population ) - 1 ) )
def problem020(n): return sum(int(c) for c in str(util.factorial(n)))
import util factorials = [util.factorial(i) for i in xrange(0, 10)] def problem034(): return sum(i for i in xrange(3, factorials[9]*7) if i == sum_of_digit_factorial(i)) def sum_of_digit_factorial(n): return sum(factorials[int(c)] for c in str(n)) def solution(): return problem034() def test(): assert sum_of_digit_factorial(145) == 145 test() print solution()
def problem015(m, n): return factorial(m + n) / (factorial(m) * factorial(n))
#!/usr/bin/env python from util import factorial nCr = lambda n, r: factorial(n) / (factorial(r) * factorial(n - r)) def main(): total = 0 for n in range(23, 101): for r in range(1, n + 1): if nCr(n, r) > 1000000: total += 1 print total if __name__ == "__main__": main()
def solve(): return sum(int(c) for c in str(factorial(100)))
def iscurious(i): return i == sum(factorial(j) for j in splitdigits(i))
def main(): print sum(i for i in range(3,50000) if sum(factorial(d) for d in digits(i)) == i)
def main(): print(sum(int(x) for x in str(factorial(100))))
""" Project Euler 34: Find the sum of all numbers which are equal to the sum of the factorial of their digits """ import util sum_all_valid_number = 0 for i in range(11,409114): digit = list(str(i)) sum_factorial = 0 for j in range(0,len(digit)): sum_factorial += util.factorial(int(digit[j])) if sum_factorial == i: print i sum_all_valid_number += i print sum_all_valid_number
""" Project Euler 20: Find the sum of the digits in 100! """ import util def sumDigit(n): if n <10: return n else: return n%10 + sumDigit(n//10) n = 100 print sumDigit(util.factorial(n))
def main(): print sum(int(i) for i in str(factorial(100)))