乌拉姆数列是由乌拉姆在
1964年提出的。数列的首两项U1和U2定义为1和2,对于n>2,Un为最小而又能刚好以一种方法表达成之前其中两个相异项的和。例如3=1+2,故U3=3;4=1+3(注意2+2不计算在内),故U4=4;5=2+3=1+4,所以它不在数列内。首几项是1, 2, 3, 4, 6, 8, 11, 13, 16, 18, 26, 28, 36, 38, 47, 48, 53, 57, 62, 69, 72, 77, 82, 87, 97, 99... (OEIS:A002858)
概念
乌拉姆数列是由乌拉姆在
1964年提出的。数列的首两项U1和U2定义为1和2,对于n>2,Un为最小而又能刚好以一种方法表达成之前其中两个相异项的和。例如3=1+2,故U3=3;4=1+3(注意2+2不计算在内),故U4=4;5=2+3=1+4,所以它不在数列内。首几项是1, 2, 3, 4, 6, 8, 11, 13, 16, 18, 26, 28, 36, 38, 47, 48, 53, 57, 62, 69, 72, 77, 82, 87, 97, 99... (OEIS:A002858)
乌拉姆猜想这个数列密度为0,但它似乎约为0.07396。这是个数学上的未解决问题。
前几项既为乌拉姆数又为素数的数组成数列为
2, 3, 11, 13, 47, 53, 97, 131, 197, 241, 409, 431, 607, 673, 739, 751, 983, 991, 1103, 1433, 1489 (A068820)
程序
以下为寻找1000下乌拉姆数程序
ulam_i = [1,2,3]ulam_j = [1,2,3]
for cand in range(4,1000):
res = []
for i in ulam_i:
for j in ulam_j:
if i == j or j>i: pass
else: res.append(i+j)
if res.count(cand) == 1:
ulam_i.append(cand)
ulam_j.append(cand)
print ulam_i
证明
设 有 无 限 多 个 Ulam 数,且 其 中 最 大 的 两 个 为 un 和 un-1。
今 考 虑 A = un + un-1,显 然 A>un 且 A 不 是 一 个 Ulam 数,
由 Ulam 数 的 定 义 得 知 A 可 以 由 多 於 一 个 方 式 以 两 个 Ulam 数 之 和 来 表 示,
设 另 一 个 方 式 为 A = uj + uk ,且 n 3 j 3k,即 A = un + un-1 = uj + uk,
若 n = j,则 n-1 = k,由 此 与 A = uj + uk 为 另 一 个 表 示 方 式 之 假 设 矛 盾。
若 n>j,则 n-1 3k,uj 和 uk 不 是 最 大 的 两 个 Ulam 数