From 5cb789c0823e5c059acbd7846e351b3112c70669 Mon Sep 17 00:00:00 2001 From: treecity Date: Sat, 7 Apr 2012 17:15:37 +0200 Subject: [PATCH] 12 --- 12.py | 40 ++++++++++++++++++++++++++++++++++++++++ func.py | 36 +++++++++++++++++++++++++++++++++++- 2 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 12.py diff --git a/12.py b/12.py new file mode 100644 index 0000000..30afe2e --- /dev/null +++ b/12.py @@ -0,0 +1,40 @@ +import func +import math + +def factor2(n): + if n<4: + return [] + p = func.primes(int(n**.5+1)) + f = {} + while n>1: + p = filter(lambda x:n%x==0,p) + if(p==[]): + f[n] = 1 + break + for i in range(len(p)): + if(p[i] in f): + f[p[i]]=f[p[i]]+1 + else: + f[p[i]]=1 + n = n/func.prod(p) +# f.sort() + return f + +def catult(seq): + vek = [1, 0] + for i in seq: + for j in range(len(vek)-1,0,-1): + vek[j] = vek[j]+vek[j-1]*i + vek[len(vek):]=[0] + + return vek[:len(vek)-1] + +def possi(test): + return sum(catult(map(lambda x:test[x],test.keys()))[1:])+1 + +for i in range(3,15000): + if(possi(factor2(func.summandielle(i)))>500): + print [possi(factor2(func.summandielle(i))), i, func.summandielle(i)], + + + diff --git a/func.py b/func.py index 86edcdc..d943894 100644 --- a/func.py +++ b/func.py @@ -1,3 +1,5 @@ +import math + # Berechnet die Summe aller vielfachen von base bis max def summandielle(max,base=1): max = int(max/base)*base @@ -57,6 +59,25 @@ def factor(n): n = n/prod(p) f.sort() return f + +def factor2(n): + if n<4: + return [] + p = primes(int(n**.5+1)) + f = {} + while n>1: + p = filter(lambda x:n%x==0,p) + if(p==[]): + f[n] = 1 + break + for i in range(len(p)): + if(p[i] in f): + f[p[i]]=f[p[i]]+1 + else: + f[p[i]]=1 + n = n/prod(p) +# f.sort() + return f # Multipliziert alle Werte aus liste seq auf def prod(seq): @@ -64,4 +85,17 @@ def prod(seq): # generiert Pyth tripel def pythtrip(u,v): - return [u*u-v*v, 2*u*v, u*u+v*v] \ No newline at end of file + return [u*u-v*v, 2*u*v, u*u+v*v] + +#Binomial Koeffizient +def binomial(n,k): + return math.factorial(n)/(math.factorial(k)*math.factorial(n-k)) + +def ebinomial(seq): + vek = [1, 0] + for i in seq: + for j in range(len(vek)-1,0,-1): + vek[j] = vek[j]+vek[j-1]*i + vek[len(vek):]=[0] + + return vek[:len(vek)-1] \ No newline at end of file -- 2.47.3