コード例 #1
0
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
コード例 #2
0
ファイル: base.py プロジェクト: naveenr414/Coin-Change
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] 	
コード例 #3
0
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
コード例 #4
0
ファイル: 024.py プロジェクト: McHogardty/Project-Euler
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))
コード例 #5
0
ファイル: euler20.py プロジェクト: GuglielmoS/ProjectEuler
def problem_20():
	return digits_sum(factorial(100))
コード例 #6
0
ファイル: euler74.py プロジェクト: jimmyhmiller/project-euler
def fact_digits(x):
    return sum(factorial(i) for i in digits(x))
コード例 #7
0
ファイル: bitvector.py プロジェクト: indraastra/ita-puzzles
def p_lineage( population ):
    return c_lineage( population ) / float( util.factorial( len( population ) - 1 ) )
コード例 #8
0
ファイル: problem020.py プロジェクト: alexdej/eulerpy
def problem020(n):
  return sum(int(c) for c in str(util.factorial(n)))
コード例 #9
0
ファイル: problem034.py プロジェクト: alexdej/eulerpy
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()
コード例 #10
0
ファイル: problem015.py プロジェクト: alexdej/eulerpy
def problem015(m, n):
  return factorial(m + n) / (factorial(m) * factorial(n))
コード例 #11
0
ファイル: euler53.py プロジェクト: jimmyhmiller/project-euler
#!/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()
コード例 #12
0
ファイル: 20.py プロジェクト: elemel/project-euler
def solve():
    return sum(int(c) for c in str(factorial(100)))
コード例 #13
0
ファイル: 34.py プロジェクト: elemel/project-euler
def iscurious(i):
    return i == sum(factorial(j) for j in splitdigits(i))
コード例 #14
0
ファイル: euler34.py プロジェクト: jimmyhmiller/project-euler
def main():
    print sum(i for i in range(3,50000) if sum(factorial(d) for d in digits(i)) == i)
コード例 #15
0
ファイル: 020.py プロジェクト: McHogardty/Project-Euler
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

コード例 #17
0
"""
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))
コード例 #18
0
ファイル: euler20.py プロジェクト: jimmyhmiller/project-euler
def main():
    print sum(int(i) for i in str(factorial(100)))