刚才在这里(http://kevinpluck.net/factors/Part5/part5.shtml)看到了如题所说的图像,立即想到用 Mathematica 验证一下。我选出了几个个人比较感兴趣的 k ,再用一句话便可输出所有对应 k 的图像:
kArray = {2, 3, 4, 6, 8, 10, 12, 14, 16, 18, 20, 36, 50};
For[i = 1, i <= Length[kArray], i++, Export["F:\" <> ToString[kArray[[i]]] <> ".png",
ArrayPlot[Table[Boole[Length[Divisors[x*y]] == kArray[[i]]], {x, 1, 400}, {y, 1, 400}],
PixelConstrained -> {1, 1}, Frame -> False]]];
当 k=2 时,由于只有素数才有两个约数,因此所有点都是形如 (p, 1) 或者 (1, p) 的点,其中 p 为某个素数:
当 k=3 时,图像上的点大致成一条斜线,斜线上的点都是形如 (p, p) 的点,其中 p 为某个素数:
当k是更大一些的奇数时,情况类似,因此不再重复了。
当 k=4 时,图像上出现了很多竖直线和水平线,这些直线的位置与素数的平方相对应:
当 k=6 时,逐渐出现了一些乍看之下不好理解的元素:
当 k=8 时,出现了之前不曾见过的情况:图中有一些连续的直线段:
当 k=10 时:
当 k=12 时:
当 k=14 时:
当 k=16 时,更加怪异了:
当 k=18 时:
当 k=20 时:
当 k=36 时:
当 k=50 时:
研究这些图像各种有趣的模式产生的原因,无疑是一个有趣的课题。