This site is supported by donations to The OEIS Foundation.
User:R. J. Mathar/oeisPy/oeisPy/oeis bulk.py
From OeisWiki
""" Native python3.1 implementations of OEIS http://oeis.org/classic functions.
==usage==
python3
>>> from oeisPy import *
==see also==
http://www.jaapspies.nl/oeis for Jaap Spies' SAGE implementations.
==author==
Richard J. Mathar, http://www.strw.leidenuniv.nl/~mathar/progs/oeisPy-0.0.1.tar.gz
"""
from math import *
from nzmath import *
def A001263(n, m):
"""
AUTHOR: Richard J. Mathar 2009-10-11
"""
return combinatorial.binomial(n-1, m-1)*combinatorial.binomial(n, m-1)//m
def A002024(n):
""" Inverse triangular numbers.
floor( (1+sqrt(1+8n))/2 ).
==input==
n -- integer >=1.
==output==
integer --
==examples==
>>>oeis_bulk.A002024(3)
3
>>>oeis_bulk.A002024(4)
4
>>>oeis_bulk.A002024(5)
4
>>>oeis_bulk.A002024(28)
7
==author==
Richard J. Mathar 2010-09-06
"""
a = 1
nidx = 1
while nidx < n:
a += 1
nidx += a
return a
def A006519(n):
""" Highest power of 2 dividing n
This function returns 2^k where 2^k | n and k is maximum.
==input==
n -- integer >=1.
==output==
integer -- 1 if n is odd, else the associated power of 2.
==examples==
>>>oeis_bulk.A006519(6)
2
>>>oeis_bulk.A006519(8)
8
>>>oeis_bulk.A006519(155)
1
==author==
Richard J. Mathar 2010-09-06
"""
a = 1
nshft = n
while (nshft %2 == 0):
a <<= 1
nshft >>= 1
return a
def A006519_list(n):
""" List of highest powers of 2 dividing 1..n
==input==
n -- integer >=1.
==output==
list -- The first n values of A006519, starting [ 1, 2, 1, 4, 1, 2, 1, 8, 1, 2]
==examples==
>>>oeis_bulk.A006519_list(6)
[1, 2, 1, 4, 1, 2]
>>>oeis_bulk.A006519_list(8)
[1, 2, 1, 4, 1, 2, 1, 8]
==author==
Richard J. Mathar 2010-09-06
"""
return [ A006519(i) for i in range (1,n+1)]
def A007814(n):
""" Exponent of the highest power of 2 dividing n
This function returns k where 2^k | n and k is maximum.
==input==
n -- integer >=1.
==output==
integer -- 0 if n is odd, else the associated exponent of 2.
==examples==
>>>oeis_bulk.A007814(6)
1
>>>oeis_bulk.A007814(8)
3
>>>oeis_bulk.A007814(16)
4
>>>oeis_bulk.A007814(155)
0
==author==
Richard J. Mathar 2010-09-06
"""
a = 0
nshft = n
while (nshft %2 == 0):
a += 1
nshft >>= 1
return a
def A007814_list(n):
""" List of exponents of largest powers of 2 dividing 1..n
==input==
n -- integer >=1.
==output==
list -- The first n values of A007814, starting [0,1,0,2,0,1,0,3]
==examples==
>>>oeis_bulk.A007814_list(6)
[0, 1, 0, 2, 0, 1]
>>>oeis_bulk.A007814_list(8)
[0, 1, 0, 2, 0, 1, 0, 3]
==author==
Richard J. Mathar 2010-09-06
"""
return [ A007814(i) for i in range (1,n+1)]
def A007953(n):
"""
AUTHOR: Richard J. Mathar 2009-10-20
"""
a=0
sh=n
while sh >0:
a += sh % 10
sh //= 10
return a
def isA011540(n):
"""
Code taken from the A071531 entry.
AUTHOR: Tim Peters, 2005-05-19
"""
while n:
n, r = divmod(n, 10)
if r == 0:
return True
return False
def A071531(n):
"""
AUTHOR: Tim Peters, 2005-05-19
"""
r, p = 1, n
while True:
if isA011540(p):
return r
r += 1
p *= n
def A104711(n, m):
"""
AUTHOR: Richard J. Mathar 2009-10-11
"""
a =0
for k in range(m, n+1):
a += A001263(k, m)
return a
def isA135027(n):
"""
AUTHOR: Richard J. Mathar 2009-10-20
"""
if n % 10 == 0:
return False
else:
return A007953(n**2) == 10 ;
def A135027(n):
"""
AUTHOR: Richard J. Mathar 2009-10-20
"""
for n in range (0, 10000000):
if isA135027(n):
print(n)
def A137932(n):
"""
AUTHOR: William A. Tedeschi, 2008-02-29
"""
return n**2 - (2*n- (n%2))
def A137935(n):
"""
AUTHOR: William A. Tedeschi, 2008-03-06
"""
return 5*n + 26*floor(n/5)
def A137936(n):
"""
AUTHOR: William A. Tedeschi, 2008-03-06
"""
return 5*(n%5) + floor(n/5)
def A147665(n):
"""
AUTHOR: Richard J. Mathar 2009-10-18
"""
if n <= 2:
return [0,1,1][n]
elif n % 3 <= 1:
return A147665(A147665(n-1))+A147665(A147665(n//3))
else:
return A147665(A147665(n-1))+A147665(n-A147665(n//3))
