login

Year-end appeal: Please make a donation to the OEIS Foundation to support ongoing development and maintenance of the OEIS. We are now in our 61st year, we have over 378,000 sequences, and we’ve reached 11,000 citations (which often say “discovered thanks to the OEIS”).

Nonnegative integers which produce a record minimum MD5 hash.
3

%I #24 Dec 25 2021 11:16:54

%S 0,1,4,6,27,134,138,168,363,1970,5329,738639,752491,848775,1803305,

%T 2420500,20412333,207691249,220455692,517921150,521602912,1149023650,

%U 1289986143,5963709738,6262635619,23831964366,79255202271,1970864394858,2255739204027

%N Nonnegative integers which produce a record minimum MD5 hash.

%C a(1) = 0; a(n) is the smallest k such that MD5(k) < MD5(a(n-1)), where integer parameters to MD5 are encoded as base-10 ASCII strings.

%C If we assume that MD5 behaves like a random function from N to {0, ..., 2^128-1}, the expected length of this sequence is the harmonic number H(2^128) ~= 89.3.

%C a(33) > 10^15.

%H Ben Whitmore, <a href="/A349647/b349647.txt">Table of n, a(n) for n = 1..32</a>

%H Wikipedia, <a href="http://en.wikipedia.org/wiki/MD5">MD5</a>

%e a(5) = 27 because MD5("27") = 02e74f10e0327ad868d138f2b4fdd6f0_16 = 3859480213286334249913589638377625328, which is smaller than all previous values MD5("0"), ..., MD5("26").

%t recordsBy[l_, P_] :=

%t Module[{max = -Infinity, x, i, recs = {}},

%t For[i = 1, i <= Length[l], i++,

%t x = P[l[[i]]];

%t If[x > max,

%t max = x;

%t AppendTo[recs, l[[i]]];

%t ]

%t ];

%t recs

%t ];

%t recordsBy[Range[1000], -Hash[ToString[#], "MD5"] &]

%o (Python)

%o from hashlib import md5

%o def afind(limit):

%o record = "~"

%o for k in range(limit+1):

%o hash = md5(str(k).encode('utf-8')).hexdigest()

%o if hash < record:

%o print(k, end=", ")

%o record = hash

%o afind(10**7) # _Michael S. Branicky_, Nov 24 2021

%Y Record maxima: A349646.

%K nonn,base,fini,hard

%O 1,3

%A _Ben Whitmore_, Nov 23 2021