cp's OEIS Frontend

This is a front-end for the Online Encyclopedia of Integer Sequences, made by Christian Perfect. The idea is to provide OEIS entries in non-ancient HTML, and then to think about how they're presented visually. The source code is on GitHub.

A090423 Primes that can be written in binary representation as concatenation of other primes.

Original entry on oeis.org

11, 23, 29, 31, 43, 47, 59, 61, 71, 79, 83, 109, 113, 127, 151, 157, 167, 173, 179, 181, 191, 223, 229, 233, 239, 241, 251, 271, 283, 317, 337, 347, 349, 353, 359, 367, 373, 379, 383, 431, 433, 439, 457, 463, 467, 479, 487, 491, 499, 503, 509, 541, 563, 599, 607
Offset: 1

Views

Author

Reinhard Zumkeller, Nov 30 2003

Keywords

Comments

A090418(a(n)) > 1; subsequence of A090421.

Examples

			337 is 101010001 in binary,
10 is 2,
10 is 2,
10001 is 17, partition is 10_10_10001, so 337 is in the sequence.
		

Crossrefs

Programs

  • Haskell
    a090423 n = a090423_list !! (n-1)
    a090423_list = filter ((> 1 ) . a090418 . fromInteger) a000040_list
    -- Reinhard Zumkeller, Aug 06 2012
    
  • PARI
    is_A090423(n)={isprime(n)&&for(i=2, #binary(n)-2, bittest(n, i-1)&&isprime(n%2^i)&&is_A090421(n>>i)&&return(1))} \\ M. F. Hasler, Apr 21 2015
  • Python
    # Primes = [2,...,607]
    from sympy import sieve
    primes = list(sieve.primerange(1, 608))
    def tryPartioning(binString):   # First digit is not 0
        l = len(binString)
        for t in range(2, l-1):
            substr1 = binString[:t]
            if (int('0b'+substr1,2) in primes) or (t>=4 and tryPartioning(substr1)):
                substr2 = binString[t:]
                if substr2[0]!='0':
                    if (int('0b'+substr2,2) in primes) or (l-t>=4 and tryPartioning(substr2)):
                        return 1
        return 0
    for p in primes:
        if tryPartioning(bin(p)[2:]):
            print(p, end=',')
    
  • Python
    from sympy import isprime, primerange
    def ok(p):
      b = bin(p)[2:]
      for i in range(2, len(b)-1):
        if isprime(int(b[:i], 2)) and b[i] != '0':
          if isprime(int(b[i:], 2)) or ok(int(b[i:], 2)): return True
      return False
    def aupto(lim): return [p for p in primerange(2, lim+1) if ok(p)]
    print(aupto(607)) # Michael S. Branicky, May 16 2021
    

Extensions

Corrected by Alex Ratushnyak, Aug 03 2012