The On-Line Encyclopedia of Integer Sequences (OEIS)¶
You can query the OEIS (Online Database of Integer Sequences) through Sage in order to:
identify a sequence from its first terms.
obtain more terms, formulae, references, etc. for a given sequence.
EXAMPLES:
sage: oeis
The On-Line Encyclopedia of Integer Sequences (https://oeis.org/)
>>> from sage.all import *
>>> oeis
The On-Line Encyclopedia of Integer Sequences (https://oeis.org/)
What about a sequence starting with \(3, 7, 15, 1\) ?
sage: # optional - internet
sage: search = oeis([3, 7, 15, 1], max_results=4); search # random
0: A001203: Simple continued fraction expansion of Pi.
1: A240698: Partial sums of divisors of n, cf. A027750.
2: A082495: a(n) = (2^n - 1) mod n.
3: A165416: Irregular array read by rows: The n-th row contains those
distinct positive integers that each, when written in binary,
occurs as a substring in binary n.
sage: [u.id() for u in search] # random
['A001203', 'A240698', 'A082495', 'A165416']
sage: c = search[0]; c
A001203: Simple continued fraction expansion of Pi.
>>> from sage.all import *
>>> # optional - internet
>>> search = oeis([Integer(3), Integer(7), Integer(15), Integer(1)], max_results=Integer(4)); search # random
0: A001203: Simple continued fraction expansion of Pi.
1: A240698: Partial sums of divisors of n, cf. A027750.
2: A082495: a(n) = (2^n - 1) mod n.
3: A165416: Irregular array read by rows: The n-th row contains those
distinct positive integers that each, when written in binary,
occurs as a substring in binary n.
>>> [u.id() for u in search] # random
['A001203', 'A240698', 'A082495', 'A165416']
>>> c = search[Integer(0)]; c
A001203: Simple continued fraction expansion of Pi.
sage: # optional - internet
sage: c.first_terms(15)
(3, 7, 15, 1, 292, 1, 1, 1, 2, 1, 3, 1, 14, 2, 1)
sage: c.examples()
0: Pi = 3.1415926535897932384...
1: = 3 + 1/(7 + 1/(15 + 1/(1 + 1/(292 + ...))))
2: = [a_0; a_1, a_2, a_3, ...] = [3; 7, 15, 1, 292, ...].
sage: c.comments()
0: The first 5821569425 terms were computed by _Eric W. Weisstein_ on Sep 18 2011.
1: The first 10672905501 terms were computed by _Eric W. Weisstein_ on Jul 17 2013.
2: The first 15000000000 terms were computed by _Eric W. Weisstein_ on Jul 27 2013.
3: The first 30113021586 terms were computed by _Syed Fahad_ on Apr 27 2021.
>>> from sage.all import *
>>> # optional - internet
>>> c.first_terms(Integer(15))
(3, 7, 15, 1, 292, 1, 1, 1, 2, 1, 3, 1, 14, 2, 1)
>>> c.examples()
0: Pi = 3.1415926535897932384...
1: = 3 + 1/(7 + 1/(15 + 1/(1 + 1/(292 + ...))))
2: = [a_0; a_1, a_2, a_3, ...] = [3; 7, 15, 1, 292, ...].
>>> c.comments()
0: The first 5821569425 terms were computed by _Eric W. Weisstein_ on Sep 18 2011.
1: The first 10672905501 terms were computed by _Eric W. Weisstein_ on Jul 17 2013.
2: The first 15000000000 terms were computed by _Eric W. Weisstein_ on Jul 27 2013.
3: The first 30113021586 terms were computed by _Syed Fahad_ on Apr 27 2021.
sage: # optional - internet
sage: x = c.natural_object(); type(x)
<class 'sage.rings.continued_fraction.ContinuedFraction_periodic'>
sage: x.convergents()[:7]
[3, 22/7, 333/106, 355/113, 103993/33102, 104348/33215, 208341/66317]
sage: RR(x.value())
3.14159265358979
sage: RR(x.value()) == RR(pi)
True
>>> from sage.all import *
>>> # optional - internet
>>> x = c.natural_object(); type(x)
<class 'sage.rings.continued_fraction.ContinuedFraction_periodic'>
>>> x.convergents()[:Integer(7)]
[3, 22/7, 333/106, 355/113, 103993/33102, 104348/33215, 208341/66317]
>>> RR(x.value())
3.14159265358979
>>> RR(x.value()) == RR(pi)
True
What about posets? Are they hard to count? To which other structures are they related?
sage: # optional - internet
sage: [Posets(i).cardinality() for i in range(10)]
[1, 1, 2, 5, 16, 63, 318, 2045, 16999, 183231]
sage: oeis(_)
0: A000112: Number of partially ordered sets ("posets") with n unlabeled elements.
sage: p = _[0]
sage: 'hard' in p.keywords()
True
sage: len(p.formulas())
0
sage: len(p.first_terms())
17
sage: p.cross_references(fetch=True) # random
0: A000798: Number of different quasi-orders (or topologies, or transitive digraphs)
with n labeled elements.
1: A001035: Number of partially ordered sets ("posets") with n labeled elements
(or labeled acyclic transitive digraphs).
2: A001930: Number of topologies, or transitive digraphs with n unlabeled nodes.
3: A006057: Number of topologies on n labeled points satisfying axioms T_0-T_4.
4: A079263: Number of constrained mixed models with n factors.
5: A079265: Number of antisymmetric transitive binary relations on n unlabeled points.
6: A263859: Triangle read by rows: T(n,k) (n>=1, k>=0) is the number of posets
with n elements and rank k (or depth k+1).
7: A316978: Number of factorizations of n into factors > 1 with no equivalent primes.
8: A319559: Number of non-isomorphic T_0 set systems of weight n.
9: A326939: Number of T_0 sets of subsets of {1..n} that cover all n vertices.
10: A326943: Number of T_0 sets of subsets of {1..n} that cover all n vertices and
are closed under intersection.
...
>>> from sage.all import *
>>> # optional - internet
>>> [Posets(i).cardinality() for i in range(Integer(10))]
[1, 1, 2, 5, 16, 63, 318, 2045, 16999, 183231]
>>> oeis(_)
0: A000112: Number of partially ordered sets ("posets") with n unlabeled elements.
>>> p = _[Integer(0)]
>>> 'hard' in p.keywords()
True
>>> len(p.formulas())
0
>>> len(p.first_terms())
17
>>> p.cross_references(fetch=True) # random
0: A000798: Number of different quasi-orders (or topologies, or transitive digraphs)
with n labeled elements.
1: A001035: Number of partially ordered sets ("posets") with n labeled elements
(or labeled acyclic transitive digraphs).
2: A001930: Number of topologies, or transitive digraphs with n unlabeled nodes.
3: A006057: Number of topologies on n labeled points satisfying axioms T_0-T_4.
4: A079263: Number of constrained mixed models with n factors.
5: A079265: Number of antisymmetric transitive binary relations on n unlabeled points.
6: A263859: Triangle read by rows: T(n,k) (n>=1, k>=0) is the number of posets
with n elements and rank k (or depth k+1).
7: A316978: Number of factorizations of n into factors > 1 with no equivalent primes.
8: A319559: Number of non-isomorphic T_0 set systems of weight n.
9: A326939: Number of T_0 sets of subsets of {1..n} that cover all n vertices.
10: A326943: Number of T_0 sets of subsets of {1..n} that cover all n vertices and
are closed under intersection.
...
What does the Taylor expansion of the \(e^{e^x-1}\) function have to do with primes ?
sage: # optional - internet, needs sage.symbolic
sage: x = var('x') ; f(x) = e^(e^x - 1)
sage: L = [a*factorial(b) for a,b in taylor(f(x), x, 0, 20).coefficients()]; L
[1, 1, 2, 5, 15, 52, 203, 877, 4140, 21147, 115975, 678570, 4213597,
27644437, 190899322, 1382958545, 10480142147, 82864869804, 682076806159,
5832742205057, 51724158235372]
sage: oeis(L)
0: A000110: Bell or exponential numbers: number of ways to partition
a set of n labeled elements.
1: A292935: E.g.f.: exp(exp(-x) - 1).
sage: b = _[0]
sage: b.formulas()[0]
'E.g.f.: exp(exp(x) - 1).'
sage: [i for i in b.comments() if 'prime' in i][-1]
'When n is prime, ...'
sage: [n for n in range(2, 20) if (b(n)-2) % n == 0]
[2, 3, 5, 7, 11, 13, 17, 19]
>>> from sage.all import *
>>> # optional - internet, needs sage.symbolic
>>> x = var('x') ; __tmp__=var("x"); f = symbolic_expression(e**(e**x - Integer(1))).function(x)
>>> L = [a*factorial(b) for a,b in taylor(f(x), x, Integer(0), Integer(20)).coefficients()]; L
[1, 1, 2, 5, 15, 52, 203, 877, 4140, 21147, 115975, 678570, 4213597,
27644437, 190899322, 1382958545, 10480142147, 82864869804, 682076806159,
5832742205057, 51724158235372]
>>> oeis(L)
0: A000110: Bell or exponential numbers: number of ways to partition
a set of n labeled elements.
1: A292935: E.g.f.: exp(exp(-x) - 1).
>>> b = _[Integer(0)]
>>> b.formulas()[Integer(0)]
'E.g.f.: exp(exp(x) - 1).'
>>> [i for i in b.comments() if 'prime' in i][-Integer(1)]
'When n is prime, ...'
>>> [n for n in range(Integer(2), Integer(20)) if (b(n)-Integer(2)) % n == Integer(0)]
[2, 3, 5, 7, 11, 13, 17, 19]
See also
If you plan to do a lot of automatic searches for subsequences, you should consider installing
SloaneEncyclopedia
, a local partial copy of the OEIS.Some infinite OEIS sequences are implemented in Sage, via the
sloane_functions
module.
AUTHORS:
Thierry Monteil (2012-02-10 – 2013-06-21): initial version.
Vincent Delecroix (2014): modifies continued fractions because of Issue #14567
Moritz Firsching (2016): modifies handling of dead sequence, see Issue #17330
Thierry Monteil (2019): refactorization (unique representation Issue #28480, laziness Issue #28627)
- class sage.databases.oeis.FancyTuple(iterable=(), /)[source]¶
Bases:
tuple
This class inherits from
tuple
, it allows to nicely print tuples whose elements have a one line representation.EXAMPLES:
sage: from sage.databases.oeis import FancyTuple sage: t = FancyTuple(['zero', 'one', 'two', 'three', 4]); t 0: zero 1: one 2: two 3: three 4: 4 sage: t[2] 'two'
>>> from sage.all import * >>> from sage.databases.oeis import FancyTuple >>> t = FancyTuple(['zero', 'one', 'two', 'three', Integer(4)]); t 0: zero 1: one 2: two 3: three 4: 4 >>> t[Integer(2)] 'two'
- class sage.databases.oeis.OEIS[source]¶
Bases:
object
The On-Line Encyclopedia of Integer Sequences.
OEIS
is a class representing the On-Line Encyclopedia of Integer Sequences. You can query it using its methods, butOEIS
can also be called directly with three arguments:query
– it can be:a string representing an OEIS ID (e.g. ‘A000045’).
an integer representing an OEIS ID (e.g. 45).
a list representing a sequence of integers.
a string, representing a text search.
max_results
– (integer, default: 30) the maximum number of results to return, they are sorted according to their relevance. In any cases, the OEIS website will never provide more than 100 results.first_result
– (integer, default: 0) allow to skip thefirst_result
first results in the search, to go further. This is useful if you are looking for a sequence that may appear after the 100 first found sequences.
OUTPUT:
if
query
is an integer or an OEIS ID (e.g. ‘A000045’), returns the associated OEIS sequence.if
query
is a string, returns a tuple of OEIS sequences whose description corresponds to the query. Those sequences can be used without the need to fetch the database again.if
query
is a list or tuple of integers, returns a tuple of OEIS sequences containing it as a subsequence. Those sequences can be used without the need to fetch the database again.
EXAMPLES:
sage: oeis The On-Line Encyclopedia of Integer Sequences (https://oeis.org/)
>>> from sage.all import * >>> oeis The On-Line Encyclopedia of Integer Sequences (https://oeis.org/)
A particular sequence can be called by its A-number or number:
sage: oeis('A000040') # optional -- internet A000040: The prime numbers. sage: oeis(45) # optional -- internet A000045: Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1.
>>> from sage.all import * >>> oeis('A000040') # optional -- internet A000040: The prime numbers. >>> oeis(Integer(45)) # optional -- internet A000045: Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1.
The database can be searched by subsequence:
sage: search = oeis([1,2,3,5,8,13]); search # optional -- internet 0: A000045: Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1. 1: A290689: Number of transitive rooted trees with n nodes. 2: A027926: Triangular array T read by rows: T(n,0) = T(n,2n) = 1 for n >= 0; T(n,1) = 1 for n >= 1; T(n,k) = T(n-1,k-2) + T(n-1,k-1) for k = 2..2n-1, n >= 2. sage: fibo = search[0] # optional -- internet sage: fibo.name() # optional -- internet 'Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1.' sage: print(fibo.first_terms()) # optional -- internet (0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309, 3524578, 5702887, 9227465, 14930352, 24157817, 39088169, 63245986, 102334155) sage: fibo.cross_references()[0] # optional -- internet 'A001622' sage: fibo == oeis(45) # optional -- internet True sage: sfibo = oeis('A039834') # optional -- internet sage: sfibo.first_terms() # optional -- internet (1, 1, 0, 1, -1, 2, -3, 5, -8, 13, -21, 34, -55, 89, -144, 233, -377, 610, -987, 1597, -2584, 4181, -6765, 10946, -17711, 28657, -46368, 75025, -121393, 196418, -317811, 514229, -832040, 1346269, -2178309, 3524578, -5702887, 9227465, -14930352, 24157817) sage: tuple(abs(i) for i in sfibo.first_terms())[2:20] == fibo.first_terms()[:18] # optional -- internet True sage: fibo.formulas()[4] # optional -- internet 'F(n) = F(n-1) + F(n-2) = -(-1)^n F(-n).' sage: fibo.comments()[6] # optional -- internet "F(n+2) = number of binary sequences of length n that have no consecutive 0's." sage: fibo.links()[0] # optional -- internet 'https://oeis.org/A000045/b000045.txt'
>>> from sage.all import * >>> search = oeis([Integer(1),Integer(2),Integer(3),Integer(5),Integer(8),Integer(13)]); search # optional -- internet 0: A000045: Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1. 1: A290689: Number of transitive rooted trees with n nodes. 2: A027926: Triangular array T read by rows: T(n,0) = T(n,2n) = 1 for n >= 0; T(n,1) = 1 for n >= 1; T(n,k) = T(n-1,k-2) + T(n-1,k-1) for k = 2..2n-1, n >= 2. >>> fibo = search[Integer(0)] # optional -- internet >>> fibo.name() # optional -- internet 'Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1.' >>> print(fibo.first_terms()) # optional -- internet (0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309, 3524578, 5702887, 9227465, 14930352, 24157817, 39088169, 63245986, 102334155) >>> fibo.cross_references()[Integer(0)] # optional -- internet 'A001622' >>> fibo == oeis(Integer(45)) # optional -- internet True >>> sfibo = oeis('A039834') # optional -- internet >>> sfibo.first_terms() # optional -- internet (1, 1, 0, 1, -1, 2, -3, 5, -8, 13, -21, 34, -55, 89, -144, 233, -377, 610, -987, 1597, -2584, 4181, -6765, 10946, -17711, 28657, -46368, 75025, -121393, 196418, -317811, 514229, -832040, 1346269, -2178309, 3524578, -5702887, 9227465, -14930352, 24157817) >>> tuple(abs(i) for i in sfibo.first_terms())[Integer(2):Integer(20)] == fibo.first_terms()[:Integer(18)] # optional -- internet True >>> fibo.formulas()[Integer(4)] # optional -- internet 'F(n) = F(n-1) + F(n-2) = -(-1)^n F(-n).' >>> fibo.comments()[Integer(6)] # optional -- internet "F(n+2) = number of binary sequences of length n that have no consecutive 0's." >>> fibo.links()[Integer(0)] # optional -- internet 'https://oeis.org/A000045/b000045.txt'
The database can be searched by description:
sage: oeis('prime gap factorization', max_results=4) # random # optional -- internet 0: A073491: Numbers having no prime gaps in their factorization. 1: A073485: Product of any number of consecutive primes; squarefree numbers with no gaps in their prime factorization. 2: A073490: Number of prime gaps in factorization of n. 3: A073492: Numbers having at least one prime gap in their factorization.
>>> from sage.all import * >>> oeis('prime gap factorization', max_results=Integer(4)) # random # optional -- internet 0: A073491: Numbers having no prime gaps in their factorization. 1: A073485: Product of any number of consecutive primes; squarefree numbers with no gaps in their prime factorization. 2: A073490: Number of prime gaps in factorization of n. 3: A073492: Numbers having at least one prime gap in their factorization.
Note
The following will fetch the OEIS database only once:
sage: oeis([1,2,3,5,8,13]) # optional -- internet 0: A000045: Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1. 1: A290689: Number of transitive rooted trees with n nodes. 2: A027926: Triangular array T read by rows: T(n,0) = T(n,2n) = 1 for n >= 0; T(n,1) = 1 for n >= 1; T(n,k) = T(n-1,k-2) + T(n-1,k-1) for k = 2..2n-1, n >= 2. sage: oeis('A000045') # optional -- internet A000045: Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1.
>>> from sage.all import * >>> oeis([Integer(1),Integer(2),Integer(3),Integer(5),Integer(8),Integer(13)]) # optional -- internet 0: A000045: Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1. 1: A290689: Number of transitive rooted trees with n nodes. 2: A027926: Triangular array T read by rows: T(n,0) = T(n,2n) = 1 for n >= 0; T(n,1) = 1 for n >= 1; T(n,k) = T(n-1,k-2) + T(n-1,k-1) for k = 2..2n-1, n >= 2. >>> oeis('A000045') # optional -- internet A000045: Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1.
Indeed, due to some caching mechanism, the sequence is not re-created when called from its ID.
- browse()[source]¶
Open the OEIS web page in a browser.
EXAMPLES:
sage: oeis.browse() # optional -- webbrowser
>>> from sage.all import * >>> oeis.browse() # optional -- webbrowser
- find_by_description(description, max_results=3, first_result=0)[source]¶
Search for OEIS sequences corresponding to the description.
INPUT:
description
– string; the description the searched sequencesmax_results
– (integer, default: 3) the maximum number of results we want. In any case, the on-line encyclopedia will not return more than 100 results.first_result
– (integer, default: 0) allow to skip thefirst_result
first results in the search, to go further. This is useful if you are looking for a sequence that may appear after the 100 first found sequences.
OUTPUT:
a tuple (with fancy formatting) of at most
max_results
OEIS sequences. Those sequences can be used without the need to fetch the database again.
EXAMPLES:
sage: oeis.find_by_description('prime gap factorization') # optional -- internet 0: A...: ... 1: A...: ... 2: A...: ... sage: prime_gaps = _[2] ; prime_gaps # optional -- internet A... sage: oeis('beaver') # optional -- internet 0: A...: ...eaver... 1: A...: ...eaver... 2: A...: ...eaver... sage: oeis('beaver', max_results=4, first_result=2) # optional -- internet 0: A...: ...eaver... 1: A...: ...eaver... 2: A...: ...eaver... 3: A...: ...eaver...
>>> from sage.all import * >>> oeis.find_by_description('prime gap factorization') # optional -- internet 0: A...: ... 1: A...: ... 2: A...: ... >>> prime_gaps = _[Integer(2)] ; prime_gaps # optional -- internet A... >>> oeis('beaver') # optional -- internet 0: A...: ...eaver... 1: A...: ...eaver... 2: A...: ...eaver... >>> oeis('beaver', max_results=Integer(4), first_result=Integer(2)) # optional -- internet 0: A...: ...eaver... 1: A...: ...eaver... 2: A...: ...eaver... 3: A...: ...eaver...
- find_by_entry(entry)[source]¶
INPUT:
entry
– string corresponding to an entry in the internal format of the OEIS
OUTPUT: the corresponding OEIS sequence
EXAMPLES:
sage: entry = '%I A262002\n%N A262002 L.g.f.: log( Sum_{n>=0} x^n/n! * Product_{k=1..n} (k^2 + 1) ).\n%K A262002 nonn' sage: s = oeis.find_by_entry(entry) sage: s A262002: L.g.f.: log( Sum_{n>=0} x^n/n! * Product_{k=1..n} (k^2 + 1) ).
>>> from sage.all import * >>> entry = '%I A262002\n%N A262002 L.g.f.: log( Sum_{n>=0} x^n/n! * Product_{k=1..n} (k^2 + 1) ).\n%K A262002 nonn' >>> s = oeis.find_by_entry(entry) >>> s A262002: L.g.f.: log( Sum_{n>=0} x^n/n! * Product_{k=1..n} (k^2 + 1) ).
- find_by_id(ident, fetch=False)[source]¶
INPUT:
ident
– string representing the A-number of the sequence or an integer representing its numberfetch
– boolean (default:False
); whether to force fetching the content of the sequence on the internet
OUTPUT: the OEIS sequence whose A-number or number corresponds to
ident
EXAMPLES:
sage: oeis.find_by_id('A000040') # optional -- internet A000040: The prime numbers. sage: oeis.find_by_id(40) # optional -- internet A000040: The prime numbers.
>>> from sage.all import * >>> oeis.find_by_id('A000040') # optional -- internet A000040: The prime numbers. >>> oeis.find_by_id(Integer(40)) # optional -- internet A000040: The prime numbers.
- find_by_subsequence(subsequence, max_results=3, first_result=0)[source]¶
Search for OEIS sequences containing the given subsequence.
INPUT:
subsequence
– list or tuple of integersmax_results
– integer (default: 3); the maximum of results requestedfirst_result
– integer (default: 0); allow to skip thefirst_result
first results in the search, to go further. This is useful if you are looking for a sequence that may appear after the 100 first found sequences.
OUTPUT:
A tuple (with fancy formatting) of at most
max_results
OEIS sequences. Those sequences can be used without the need to fetch the database again.EXAMPLES:
sage: oeis.find_by_subsequence([2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377]) # optional -- internet # random 0: A000045: Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1. 1: A212804: Expansion of (1 - x)/(1 - x - x^2). 2: A020695: Pisot sequence E(2,3). sage: fibo = _[0] ; fibo # optional -- internet A000045: Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1.
>>> from sage.all import * >>> oeis.find_by_subsequence([Integer(2), Integer(3), Integer(5), Integer(8), Integer(13), Integer(21), Integer(34), Integer(55), Integer(89), Integer(144), Integer(233), Integer(377)]) # optional -- internet # random 0: A000045: Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1. 1: A212804: Expansion of (1 - x)/(1 - x - x^2). 2: A020695: Pisot sequence E(2,3). >>> fibo = _[Integer(0)] ; fibo # optional -- internet A000045: Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1.
- class sage.databases.oeis.OEISSequence(ident)[source]¶
Bases:
SageObject
,UniqueRepresentation
The class of OEIS sequences.
This class implements OEIS sequences. They are usually produced by calls to the On-Line Encyclopedia of Integer Sequences, represented by the class
OEIS
.Note
Since some sequences do not start with index 0, there is a difference between calling and getting item, see
__call__()
for more detailssage: # optional - internet sage: sfibo = oeis('A039834') sage: sfibo.first_terms()[:10] (1, 1, 0, 1, -1, 2, -3, 5, -8, 13) sage: sfibo(-2) 1 sage: sfibo(3) 2 sage: sfibo.offsets() (-2, 6) sage: sfibo[0] 1 sage: sfibo[6] -3
>>> from sage.all import * >>> # optional - internet >>> sfibo = oeis('A039834') >>> sfibo.first_terms()[:Integer(10)] (1, 1, 0, 1, -1, 2, -3, 5, -8, 13) >>> sfibo(-Integer(2)) 1 >>> sfibo(Integer(3)) 2 >>> sfibo.offsets() (-2, 6) >>> sfibo[Integer(0)] 1 >>> sfibo[Integer(6)] -3
- __call__(k)[source]¶
Return the element of the sequence
self
with indexk
.INPUT:
k
– integer
OUTPUT: integer
Note
The first index of the sequence
self
is not necessarily zero, it depends on the first offset ofself
. If the sequence represents the decimal expansion of a real number, the index 0 corresponds to the digit right after the decimal point.EXAMPLES:
sage: f = oeis(45) # optional -- internet sage: f.first_terms()[:10] # optional -- internet (0, 1, 1, 2, 3, 5, 8, 13, 21, 34) sage: f(4) # optional -- internet 3
>>> from sage.all import * >>> f = oeis(Integer(45)) # optional -- internet >>> f.first_terms()[:Integer(10)] # optional -- internet (0, 1, 1, 2, 3, 5, 8, 13, 21, 34) >>> f(Integer(4)) # optional -- internet 3
sage: sfibo = oeis('A039834') # optional -- internet sage: sfibo.first_terms()[:10] # optional -- internet (1, 1, 0, 1, -1, 2, -3, 5, -8, 13) sage: sfibo(-2) # optional -- internet 1 sage: sfibo(4) # optional -- internet -3 sage: sfibo.offsets() # optional -- internet (-2, 6)
>>> from sage.all import * >>> sfibo = oeis('A039834') # optional -- internet >>> sfibo.first_terms()[:Integer(10)] # optional -- internet (1, 1, 0, 1, -1, 2, -3, 5, -8, 13) >>> sfibo(-Integer(2)) # optional -- internet 1 >>> sfibo(Integer(4)) # optional -- internet -3 >>> sfibo.offsets() # optional -- internet (-2, 6)
- author()[source]¶
Return the author of the sequence in the encyclopedia.
OUTPUT: string
EXAMPLES:
sage: f = oeis(45) ; f # optional -- internet A000045: Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1. sage: f.author() # optional -- internet '_N. J. A. Sloane_, 1964'
>>> from sage.all import * >>> f = oeis(Integer(45)) ; f # optional -- internet A000045: Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1. >>> f.author() # optional -- internet '_N. J. A. Sloane_, 1964'
- browse()[source]¶
Open the OEIS web page associated to the sequence
self
in a browser.EXAMPLES:
sage: f = oeis(45); f # optional -- internet webbrowser A000045: Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1. sage: f.browse() # optional -- internet webbrowser
>>> from sage.all import * >>> f = oeis(Integer(45)); f # optional -- internet webbrowser A000045: Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1. >>> f.browse() # optional -- internet webbrowser
- comments()[source]¶
Return a tuple of comments associated to the sequence
self
.OUTPUT:
tuple of strings (with fancy formatting).
EXAMPLES:
sage: f = oeis(45); f # optional -- internet A000045: Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1. sage: f.comments()[:8] # optional -- internet 0: D. E. Knuth writes... 1: In keeping with historical accounts... 2: Susantha Goonatilake writes... 3: Also sometimes called Hemachandra numbers. 4: Also sometimes called Lamé's sequence. 5: ... 6: F(n+2) = number of binary sequences of length n that have no consecutive 0's. 7: F(n+2) = number of subsets of {1,2,...,n} that contain no consecutive integers.
>>> from sage.all import * >>> f = oeis(Integer(45)); f # optional -- internet A000045: Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1. >>> f.comments()[:Integer(8)] # optional -- internet 0: D. E. Knuth writes... 1: In keeping with historical accounts... 2: Susantha Goonatilake writes... 3: Also sometimes called Hemachandra numbers. 4: Also sometimes called Lamé's sequence. 5: ... 6: F(n+2) = number of binary sequences of length n that have no consecutive 0's. 7: F(n+2) = number of subsets of {1,2,...,n} that contain no consecutive integers.
- cross_references(fetch=False)[source]¶
Return a tuple of cross references associated to the sequence
self
.INPUT:
fetch
– boolean (default:False
)
OUTPUT:
if
fetch
isFalse
, return a list of OEIS IDs (strings).if
fetch
isTrue
, return a tuple of OEIS sequences.
EXAMPLES:
sage: nbalanced = oeis("A005598") ; nbalanced # optional -- internet A005598: a(n) = 1 + Sum_{i=1..n} (n-i+1)*phi(i). sage: nbalanced.cross_references() # optional -- internet ('A000010', 'A002088', 'A011755', 'A049695', 'A049703', 'A103116') sage: nbalanced.cross_references(fetch=True) # optional -- internet 0: A000010: Euler totient function phi(n): count numbers <= n and prime to n. 1: A002088: Sum of totient function: a(n) = Sum_{k=1..n} phi(k), cf. A000010. 2: A011755: a(n) = Sum_{k=1..n} k*phi(k). 3: A049695: Array T read by diagonals; T(i,j) is the number of nonnegative slopes of lines determined by 2 lattice points in [ 0,i ] X [ 0,j ] if i > 0; T(0,j)=1 if j > 0; T(0,0)=0. 4: A049703: a(0) = 0; for n>0, a(n) = A005598(n)/2. 5: A103116: a(n) = Sum_{i=1..n} (n-i+1)*phi(i). sage: phi = _[3] # optional -- internet
>>> from sage.all import * >>> nbalanced = oeis("A005598") ; nbalanced # optional -- internet A005598: a(n) = 1 + Sum_{i=1..n} (n-i+1)*phi(i). >>> nbalanced.cross_references() # optional -- internet ('A000010', 'A002088', 'A011755', 'A049695', 'A049703', 'A103116') >>> nbalanced.cross_references(fetch=True) # optional -- internet 0: A000010: Euler totient function phi(n): count numbers <= n and prime to n. 1: A002088: Sum of totient function: a(n) = Sum_{k=1..n} phi(k), cf. A000010. 2: A011755: a(n) = Sum_{k=1..n} k*phi(k). 3: A049695: Array T read by diagonals; T(i,j) is the number of nonnegative slopes of lines determined by 2 lattice points in [ 0,i ] X [ 0,j ] if i > 0; T(0,j)=1 if j > 0; T(0,0)=0. 4: A049703: a(0) = 0; for n>0, a(n) = A005598(n)/2. 5: A103116: a(n) = Sum_{i=1..n} (n-i+1)*phi(i). >>> phi = _[Integer(3)] # optional -- internet
- examples()[source]¶
Return a tuple of examples associated to the sequence
self
.OUTPUT:
tuple of strings (with fancy formatting).
EXAMPLES:
sage: c = oeis(1203); c # optional -- internet A001203: Simple continued fraction expansion of Pi. sage: c.examples() # optional -- internet 0: Pi = 3.1415926535897932384... 1: = 3 + 1/(7 + 1/(15 + 1/(1 + 1/(292 + ...)))) 2: = [a_0; a_1, a_2, a_3, ...] = [3; 7, 15, 1, 292, ...].
>>> from sage.all import * >>> c = oeis(Integer(1203)); c # optional -- internet A001203: Simple continued fraction expansion of Pi. >>> c.examples() # optional -- internet 0: Pi = 3.1415926535897932384... 1: = 3 + 1/(7 + 1/(15 + 1/(1 + 1/(292 + ...)))) 2: = [a_0; a_1, a_2, a_3, ...] = [3; 7, 15, 1, 292, ...].
- extensions_or_errors()[source]¶
Return a tuple of extensions or errors associated to the sequence
self
.OUTPUT:
tuple of strings (with fancy formatting).
EXAMPLES:
sage: sfibo = oeis('A039834'); sfibo # optional -- internet A039834: a(n+2) = -a(n+1) + a(n) (signed Fibonacci numbers) with a(-2) = a(-1) = 1; or Fibonacci numbers (A000045) extended to negative indices. sage: sfibo.extensions_or_errors()[0] # optional -- internet 'Signs corrected by _Len Smiley_ and _N. J. A. Sloane_'
>>> from sage.all import * >>> sfibo = oeis('A039834'); sfibo # optional -- internet A039834: a(n+2) = -a(n+1) + a(n) (signed Fibonacci numbers) with a(-2) = a(-1) = 1; or Fibonacci numbers (A000045) extended to negative indices. >>> sfibo.extensions_or_errors()[Integer(0)] # optional -- internet 'Signs corrected by _Len Smiley_ and _N. J. A. Sloane_'
- first_terms(number=None)[source]¶
INPUT:
number
– integer orNone
(default); the number of terms returned (if less than the number of available terms). When set toNone
, returns all the known terms.
OUTPUT: tuple of integers
EXAMPLES:
sage: f = oeis(45); f # optional -- internet A000045: Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1. sage: f.first_terms()[:10] # optional -- internet (0, 1, 1, 2, 3, 5, 8, 13, 21, 34)
>>> from sage.all import * >>> f = oeis(Integer(45)); f # optional -- internet A000045: Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1. >>> f.first_terms()[:Integer(10)] # optional -- internet (0, 1, 1, 2, 3, 5, 8, 13, 21, 34)
Handle dead sequences, see Issue #17330
sage: oeis(5000).first_terms(12) # optional -- internet (1, 0, 0, 1, 1, 1, 11, 36, 92, 491, 2537)
>>> from sage.all import * >>> oeis(Integer(5000)).first_terms(Integer(12)) # optional -- internet (1, 0, 0, 1, 1, 1, 11, 36, 92, 491, 2537)
- formulas()[source]¶
Return a tuple of formulas associated to the sequence
self
.OUTPUT:
tuple of strings (with fancy formatting).
EXAMPLES:
sage: f = oeis(45) ; f # optional -- internet A000045: Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1. sage: f.formulas()[2] # optional -- internet 'F(n) = ((1+sqrt(5))^n - (1-sqrt(5))^n)/(2^n*sqrt(5)).'
>>> from sage.all import * >>> f = oeis(Integer(45)) ; f # optional -- internet A000045: Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1. >>> f.formulas()[Integer(2)] # optional -- internet 'F(n) = ((1+sqrt(5))^n - (1-sqrt(5))^n)/(2^n*sqrt(5)).'
- id(format='A')[source]¶
The ID of the sequence
self
is the A-number that identifiesself
.INPUT:
format
– string (default:'A'
)
OUTPUT:
if
format
is set to ‘A’, returns a string of the form ‘A000123’.if
format
is set to ‘int’ returns an integer of the form 123.
EXAMPLES:
sage: f = oeis(45) ; f # optional -- internet A000045: Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1. sage: f.id() # optional -- internet 'A000045' sage: f.id(format='int') # optional -- internet 45
>>> from sage.all import * >>> f = oeis(Integer(45)) ; f # optional -- internet A000045: Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1. >>> f.id() # optional -- internet 'A000045' >>> f.id(format='int') # optional -- internet 45
- is_dead(warn_only=False)[source]¶
Tell whether the sequence is dead.
INPUT:
warn_only
– ignored
EXAMPLES:
sage: s = oeis(17) # optional – internet sage: s # optional – internet A000017: Erroneous version of A032522.
- is_finite()[source]¶
Tell whether the sequence is finite.
Currently, OEIS only provides a keyword when the sequence is known to be finite. So, when this keyword is not there, we do not know whether it is infinite or not.
OUTPUT:
True
when the sequence is known to be finite.Unknown
otherwise.
Todo
Ask OEIS for a keyword ensuring that a sequence is infinite.
EXAMPLES:
sage: s = oeis('A114288') ; s # optional -- internet A114288: Lexicographically earliest solution of any 9 X 9 sudoku, read by rows. sage: s.is_finite() # optional -- internet True
>>> from sage.all import * >>> s = oeis('A114288') ; s # optional -- internet A114288: Lexicographically earliest solution of any 9 X 9 sudoku, read by rows. >>> s.is_finite() # optional -- internet True
sage: f = oeis(45) ; f # optional -- internet A000045: Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1. sage: f.is_finite() # optional -- internet Unknown
>>> from sage.all import * >>> f = oeis(Integer(45)) ; f # optional -- internet A000045: Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1. >>> f.is_finite() # optional -- internet Unknown
- is_full()[source]¶
Tell whether the sequence
self
is full, that is, if all its elements are listed inself.first_terms()
.Currently, OEIS only provides a keyword when the sequence is known to be full. So, when this keyword is not there, we do not know whether some elements are missing or not.
OUTPUT:
True
when the sequence is known to be full.Unknown
otherwise.
EXAMPLES:
sage: s = oeis('A114288') ; s # optional -- internet A114288: Lexicographically earliest solution of any 9 X 9 sudoku, read by rows. sage: s.is_full() # optional -- internet True
>>> from sage.all import * >>> s = oeis('A114288') ; s # optional -- internet A114288: Lexicographically earliest solution of any 9 X 9 sudoku, read by rows. >>> s.is_full() # optional -- internet True
sage: f = oeis(45) ; f # optional -- internet A000045: Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1. sage: f.is_full() # optional -- internet Unknown
>>> from sage.all import * >>> f = oeis(Integer(45)) ; f # optional -- internet A000045: Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1. >>> f.is_full() # optional -- internet Unknown
- keywords(warn=True)[source]¶
Return the keywords associated to the sequence
self
.OUTPUT: tuple of strings
EXAMPLES:
sage: f = oeis(53) ; f # optional -- internet A000053: Local stops on New York City... sage: f.keywords() # optional -- internet ('nonn', 'fini', ...)
>>> from sage.all import * >>> f = oeis(Integer(53)) ; f # optional -- internet A000053: Local stops on New York City... >>> f.keywords() # optional -- internet ('nonn', 'fini', ...)
- links(browse=None, format='guess')[source]¶
Return, display or browse links associated to the sequence
self
.INPUT:
browse
– integer; a list of integers, or the word ‘all’ (default:None
) which links to open in a web browserformat
– string (default:'guess'
); how to display the links
OUTPUT: tuple of strings (with fancy formatting):
if
format
isurl
, returns a tuple of absolute links without description.if
format
ishtml
, returns nothing but prints a tuple of clickable absolute links in their context.if
format
isguess
, adapts the output to the context (command line or notebook).if
format
israw
, the links as they appear in the database, relative links are not made absolute.
EXAMPLES:
sage: f = oeis(45) ; f # optional -- internet A000045: Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1. sage: f.links(format='url') # optional -- internet 0: https://oeis.org/A000045/b000045.txt 1: ... 2: ... sage: f.links(format='raw') # optional -- internet 0: N. J. A. Sloane, <a href="/A000045/b000045.txt">The first 2000 Fibonacci numbers: Table of n, F(n) for n = 0..2000</a> 1: ... 2: ...
>>> from sage.all import * >>> f = oeis(Integer(45)) ; f # optional -- internet A000045: Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1. >>> f.links(format='url') # optional -- internet 0: https://oeis.org/A000045/b000045.txt 1: ... 2: ... >>> f.links(format='raw') # optional -- internet 0: N. J. A. Sloane, <a href="/A000045/b000045.txt">The first 2000 Fibonacci numbers: Table of n, F(n) for n = 0..2000</a> 1: ... 2: ...
- name()[source]¶
Return the name of the sequence
self
.OUTPUT: string
EXAMPLES:
sage: f = oeis(45) ; f # optional -- internet A000045: Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1. sage: f.name() # optional -- internet 'Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1.'
>>> from sage.all import * >>> f = oeis(Integer(45)) ; f # optional -- internet A000045: Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1. >>> f.name() # optional -- internet 'Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1.'
- natural_object()[source]¶
Return the natural object associated to the sequence
self
.OUTPUT:
If the sequence
self
corresponds to the digits of a real number, returns the associated real number (as an element of RealLazyField()).If the sequence
self
corresponds to the convergents of a continued fraction, returns the associated continued fraction.
Warning
This method forgets the fact that the returned sequence may not be complete.
Todo
ask OEIS to add a keyword telling whether the sequence comes from a power series, e.g. for OEIS sequence A000182
discover other possible conversions.
EXAMPLES:
sage: g = oeis("A002852"); g # optional -- internet A002852: Continued fraction for Euler's constant (or Euler-Mascheroni constant) gamma. sage: x = g.natural_object(); type(x) # optional -- internet <class 'sage.rings.continued_fraction.ContinuedFraction_periodic'> sage: RDF(x) == RDF(euler_gamma) # optional -- internet True sage: cfg = continued_fraction(euler_gamma) # needs sage.symbolic sage: x[:90] == cfg[:90] # optional - internet # needs sage.symbolic True
>>> from sage.all import * >>> g = oeis("A002852"); g # optional -- internet A002852: Continued fraction for Euler's constant (or Euler-Mascheroni constant) gamma. >>> x = g.natural_object(); type(x) # optional -- internet <class 'sage.rings.continued_fraction.ContinuedFraction_periodic'> >>> RDF(x) == RDF(euler_gamma) # optional -- internet True >>> cfg = continued_fraction(euler_gamma) # needs sage.symbolic >>> x[:Integer(90)] == cfg[:Integer(90)] # optional - internet # needs sage.symbolic True
sage: ee = oeis('A001113'); ee # optional -- internet A001113: Decimal expansion of e. sage: x = ee.natural_object(); x # optional -- internet 2.718281828459046? sage: x.parent() # optional -- internet Real Lazy Field sage: x == RR(e) # optional -- internet True
>>> from sage.all import * >>> ee = oeis('A001113'); ee # optional -- internet A001113: Decimal expansion of e. >>> x = ee.natural_object(); x # optional -- internet 2.718281828459046? >>> x.parent() # optional -- internet Real Lazy Field >>> x == RR(e) # optional -- internet True
sage: av = oeis('A322578'); av # optional -- internet A322578: Decimal expansion ... Avogadro... sage: av.natural_object() # optional -- internet 6.022140760000000?e23
>>> from sage.all import * >>> av = oeis('A322578'); av # optional -- internet A322578: Decimal expansion ... Avogadro... >>> av.natural_object() # optional -- internet 6.022140760000000?e23
sage: fib = oeis('A000045'); fib # optional -- internet A000045: Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1. sage: x = fib.natural_object(); x.universe() # optional -- internet Non negative integer semiring
>>> from sage.all import * >>> fib = oeis('A000045'); fib # optional -- internet A000045: Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1. >>> x = fib.natural_object(); x.universe() # optional -- internet Non negative integer semiring
sage: sfib = oeis('A039834'); sfib # optional -- internet A039834: a(n+2) = -a(n+1) + a(n) (signed Fibonacci numbers) with a(-2) = a(-1) = 1; or Fibonacci numbers (A000045) extended to negative indices. sage: x = sfib.natural_object(); x.universe() # optional -- internet Integer Ring
>>> from sage.all import * >>> sfib = oeis('A039834'); sfib # optional -- internet A039834: a(n+2) = -a(n+1) + a(n) (signed Fibonacci numbers) with a(-2) = a(-1) = 1; or Fibonacci numbers (A000045) extended to negative indices. >>> x = sfib.natural_object(); x.universe() # optional -- internet Integer Ring
- offsets()[source]¶
Return the offsets of the sequence
self
.The first offset is the subscript of the first term in the sequence
self
. When, the sequence represents the decimal expansion of a real number, it corresponds to the number of digits of its integer part.The second offset is the first term in the sequence
self
(starting from 1) whose absolute value is greater than 1. This is set to 1 if all the terms are 0 or +-1.OUTPUT: tuple of two elements
EXAMPLES:
sage: f = oeis(45) ; f # optional -- internet A000045: Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1. sage: f.offsets() # optional -- internet (0, 4) sage: f.first_terms()[:4] # optional -- internet (0, 1, 1, 2)
>>> from sage.all import * >>> f = oeis(Integer(45)) ; f # optional -- internet A000045: Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1. >>> f.offsets() # optional -- internet (0, 4) >>> f.first_terms()[:Integer(4)] # optional -- internet (0, 1, 1, 2)
- old_IDs()[source]¶
Return the IDs of the sequence
self
corresponding to ancestors of OEIS.OUTPUT:
a tuple of at most two strings. When the string starts with \(M\), it corresponds to the ID of “The Encyclopedia of Integer Sequences” of 1995. When the string starts with \(N\), it corresponds to the ID of the “Handbook of Integer Sequences” of 1973.
EXAMPLES:
sage: f = oeis(45) ; f # optional -- internet A000045: Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1. sage: f.old_IDs() # optional -- internet ('M0692', 'N0256')
>>> from sage.all import * >>> f = oeis(Integer(45)) ; f # optional -- internet A000045: Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1. >>> f.old_IDs() # optional -- internet ('M0692', 'N0256')
- programs(language='all', preparsing=True, keep_comments=False)[source]¶
Return programs for the sequence
self
in the givenlanguage
.INPUT:
language
– string (default:'all'
); the chosen language. Possible values are ‘all’ for the full list, or any language name, for example ‘sage’, ‘maple’, ‘mathematica’, etc.
Some further optional input is specific to sage code treatment:
preparsing
– boolean (default:True
); whether to preparse sage codekeep_comments
– boolean (default:False
); whether to keep comments in sage code
OUTPUT:
If
language
is'all'
, this returns a sorted list of pairs (language, code), where every language can appear several times.Otherwise, this returns a list of programs in the
language
, each program being a tuple of strings (with fancy formatting).EXAMPLES:
sage: ee = oeis('A001113') ; ee # optional -- internet A001113: Decimal expansion of e. sage: ee.programs('pari')[0] # optional -- internet 0: default(realprecision, 50080); x=exp(1); for (n=1, 50000, d=floor(x); x=(x-d)*10; write("b001113.txt", n, " ", d)); \\ _Harry J. Smith_, Apr 15 2009 sage: G = oeis.find_by_id('A27642') # optional -- internet sage: G.programs('all') # optional -- internet [('haskell', ...), ('magma', ...), ... ('python', ...), ('sage', ...)]
>>> from sage.all import * >>> ee = oeis('A001113') ; ee # optional -- internet A001113: Decimal expansion of e. >>> ee.programs('pari')[Integer(0)] # optional -- internet 0: default(realprecision, 50080); x=exp(1); for (n=1, 50000, d=floor(x); x=(x-d)*10; write("b001113.txt", n, " ", d)); \\ _Harry J. Smith_, Apr 15 2009 >>> G = oeis.find_by_id('A27642') # optional -- internet >>> G.programs('all') # optional -- internet [('haskell', ...), ('magma', ...), ... ('python', ...), ('sage', ...)]
- raw_entry()[source]¶
Return the raw entry of the sequence
self
, in the OEIS format.The raw entry is fetched online if needed.
OUTPUT: string
EXAMPLES:
sage: f = oeis(45) ; f # optional -- internet A000045: Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1. sage: print(f.raw_entry()) # optional -- internet %I A000045 M0692 N0256... %S A000045 0,1,1,2,3,5,8,13,21,34,55,89,144,... %T A000045 10946,17711,28657,46368,... ...
>>> from sage.all import * >>> f = oeis(Integer(45)) ; f # optional -- internet A000045: Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1. >>> print(f.raw_entry()) # optional -- internet %I A000045 M0692 N0256... %S A000045 0,1,1,2,3,5,8,13,21,34,55,89,144,... %T A000045 10946,17711,28657,46368,... ...
- references()[source]¶
Return a tuple of references associated to the sequence
self
.OUTPUT:
tuple of strings (with fancy formatting).
EXAMPLES:
sage: w = oeis(7540) ; w # optional -- internet A007540: Wilson primes: primes p such that (p-1)! == -1 (mod p^2). sage: w.references() # optional -- internet ...Albert H. Beiler, Recreations in the Theory of Numbers, Dover, NY, 1964, p. 52. ...
>>> from sage.all import * >>> w = oeis(Integer(7540)) ; w # optional -- internet A007540: Wilson primes: primes p such that (p-1)! == -1 (mod p^2). >>> w.references() # optional -- internet ...Albert H. Beiler, Recreations in the Theory of Numbers, Dover, NY, 1964, p. 52. ...
- show()[source]¶
Display most available information about the sequence
self
.EXAMPLES:
sage: s = oeis(12345) # optional -- internet sage: s.show() # optional -- internet ID A012345 NAME Coefficients in the expansion sinh(arcsin(x)*arcsin(x)) = 2*x^2/2!+8*x^4/4!+248*x^6/6!+11328*x^8/8!+... FIRST TERMS (2, 8, 248, 11328, 849312, 94857600, 14819214720, 3091936512000, 831657655349760, 280473756197529600, 115967597965430077440, 57712257892456911912960, 34039765801079493369569280) LINKS 0: https://oeis.org/A012345/b012345.txt FORMULAS ... OFFSETS (0, 1) URL https://oeis.org/A012345 AUTHOR Patrick Demichel (patrick.demichel(AT)hp.com)
>>> from sage.all import * >>> s = oeis(Integer(12345)) # optional -- internet >>> s.show() # optional -- internet ID A012345 <BLANKLINE> NAME Coefficients in the expansion sinh(arcsin(x)*arcsin(x)) = 2*x^2/2!+8*x^4/4!+248*x^6/6!+11328*x^8/8!+... <BLANKLINE> FIRST TERMS (2, 8, 248, 11328, 849312, 94857600, 14819214720, 3091936512000, 831657655349760, 280473756197529600, 115967597965430077440, 57712257892456911912960, 34039765801079493369569280) <BLANKLINE> LINKS 0: https://oeis.org/A012345/b012345.txt <BLANKLINE> FORMULAS ... OFFSETS (0, 1) <BLANKLINE> URL https://oeis.org/A012345 <BLANKLINE> AUTHOR Patrick Demichel (patrick.demichel(AT)hp.com) <BLANKLINE>
- test_compile_sage_code()[source]¶
Try to compile the extracted sage code, if there is any.
If there are several sage code fields, they are all considered.
Dead sequences are considered to compile correctly by default.
This returns
True
if the code compiles, and raises an error otherwise.EXAMPLES:
One correct sequence:
sage: s = oeis.find_by_id('A027642') # optional -- internet sage: s.test_compile_sage_code() # optional -- internet True
>>> from sage.all import * >>> s = oeis.find_by_id('A027642') # optional -- internet >>> s.test_compile_sage_code() # optional -- internet True
One dead sequence:
sage: s = oeis.find_by_id('A000154') # optional -- internet sage: s.test_compile_sage_code() # optional -- internet True
>>> from sage.all import * >>> s = oeis.find_by_id('A000154') # optional -- internet >>> s.test_compile_sage_code() # optional -- internet True
- url()[source]¶
Return the URL of the page associated to the sequence
self
.OUTPUT: string
EXAMPLES:
sage: f = oeis(45); f # optional -- internet A000045: Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1. sage: f.url() # optional -- internet 'https://oeis.org/A000045'
>>> from sage.all import * >>> f = oeis(Integer(45)); f # optional -- internet A000045: Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1. >>> f.url() # optional -- internet 'https://oeis.org/A000045'