A118118 Composite numbers that always remain composite when a single decimal digit of the number is changed.
200, 204, 206, 208, 320, 322, 324, 325, 326, 328, 510, 512, 514, 515, 516, 518, 530, 532, 534, 535, 536, 538, 620, 622, 624, 625, 626, 628, 840, 842, 844, 845, 846, 848, 890, 892, 894, 895, 896, 898, 1070, 1072, 1074, 1075, 1076, 1078, 1130
Offset: 1
Examples
a(1) = 200 is in the sequence because changing any digit of 200 (for example 300, 220, or 209) is still composite. The integer 100 is not in the sequence because it can be changed to 107 which is prime.
Links
- Paolo P. Lava, Table of n, a(n) for n = 1..10000
- G. L. Honaker, Jr. and Chris Caldwell, Prime Curios! 200
- Project Euler, Problem 200. Find the 200th prime-proof sqube containing the contiguous sub-string "200" (2008)
Programs
-
Magma
IsA118118:=function(n); D:=Intseq(n); return forall{
: k in [1..#D], j in [0..9] | j eq D[k] or not IsPrime(Seqint(S)) where S:=Insert(D, k, k, [j]) }; end function; [ n: n in [1..1200] | IsA118118(n) ]; // Klaus Brockhaus, Feb 28 2011 -
Mathematica
unprimeableQ[n_] := Block[{d = IntegerDigits@ n, t = {}}, Do[AppendTo[t, FromDigits@ ReplacePart[d, i -> #] & /@ DeleteCases[Range[0, 9], x_ /; x == d[[i]]]], {i, Length@ d}]; ! AnyTrue[Flatten@ t, PrimeQ]]; Select[Range@ 1200, unprimeableQ] (* Michael De Vlieger, Nov 09 2015, Version 10 *)
-
PARI
/* return 1 if no digit can be changed to make it prime; if d=1, print a prime if n is not prime-proof */ isA118118(n,d=0)={ forstep( k=n\10*10+1, n\10*10+9,2, isprime(k) || next; d && print("prime:",k); return); if( n%2==0 || n%5==0, /* even or ending in 5: no other digit can make it prime, except for the case where the last digit is prime and the first digit is the only other nonzero one */ return( !isprime(n%10) || 9 < n % 10^( log(n+.5)\log(10) ) || (d && print("prime:",n%10)) )); o=10; until( n < o*=10, k=n-o*(n\o%10); for( i=0,9, isprime(k) && return(d && print("prime:",k)); k+=o));1} \\ M. F. Hasler, Sep 04 2008
-
Python
from sympy import isprime def selfplusneighs(n): s = str(n); d = "0123456789"; L = len(s) yield from (int(s[:i]+c+s[i+1:]) for c in d for i in range(L)) def ok(n): return all(not isprime(k) for k in selfplusneighs(n)) print([k for k in range(1131) if ok(k)]) # Michael S. Branicky, Jun 19 2022
Extensions
Edited by Charles R Greathouse IV, Aug 05 2010
Comments