再考虑孪生素数问题。试问,

构成的孪生素数是否有无限多对。
假定存在
和
符合,

显然这样的数是存在的,我们要看存在条件,让我们构造孪生素数,根据3和5对于
周期的情况,写出,



这时候的
实际上是虚假的,真实的
是两个,



代回,



根据,


但实际验证,

所以修正为,



代回验证,


可见,

是正确的。再代入,






但对于
周期,
,所以应该考虑
和
具有不同的单位,

根据等位原则和虚数单位的可伸缩性,

原方程,

写为,




可见,事情发生在单位为
的层面上,而且层面错开半个周期,调和层面的结果为,

代入,

添加必要的虚数单位的幂次,







得到以虚数单位为中心表达的平衡形式,

通过调整虚数单位,将两个错位的质数强行拉到同一个平面,

重新代入,



最终解出两者的关系,

满足这个方程的
首先是存在的,实际上计算的结果
和
非常接近,因为它们本来就是一个数的两种形式。比如,


但既然质数已经给出,2n的最小值也就知道了,另一个数只需要,

即可,但作为存在性证明,有
就一定有
,而
有无限多个,符合这个要求的
也有无限多个,于是,孪生素数猜想得证。
为什么要用四次幂相减?因为,

已经提示了二者都在四分之一周期,也就是两个质数的单位都在当前层面的正负虚数单位上,所以用四次幂才能把它们和其它自然数对齐。而且我们知道,仅在虚数单位的数值极大的时候,才有,

当然这也是虚数单位的特点。由此可以知道,虽然两个成对的质数虽然可能会非常大,但是它们总是存在的。算法的本质在于,把数量的单位还原,才能知道这些数量发生在哪个层次,针对它们所在的层次,才能构造合适的关系。
根据这些分析,可以看出,孪生素数,是对应
周期中的虚数单位的两种表现形式。分别存在于当前周期的上下四分之一周期中。
在修正,

的过程中发现实际上有两种情况,

如果
说明两者是孪生素数,因为两者带有当前周期上下各四分之一周期的虚数单位,而如果带有当前周期上下各二分之一的周期的虚数单位,就不可能是孪生素数了(有可能间隔为4)。所以两者乘积是否为负数,可能是判定孪生素数的重要判据。
为了验证质数是倒着数的,以及有限域质数平方之和和自然数平方之和的关系,给出如下程序,具体内容请看代码。
cs
using System;
using System.Text;
using System.Linq;
var builder = new StringBuilder();
for (var i = 2; i < 20; i++)
{
builder.Append($"{i}:");
var u = 0;
for (var j = 1; j <= i; j++)
{
builder.Append($"{j}^2");
u += j * j;
if (j < i)
{
builder.Append(" + ");
}
}
builder.Append($" = {u}");
Console.WriteLine($"{builder}");
builder.Clear();
var t = 2 * i * i; //2n
var found = false;
var primes = Enumerable.Range(2, t).Where(p => IsPrime(p)).ToList();
if (primes.Count > 0)
{
for (var cycle = i; cycle <= t; cycle++)
{
var d = 0;
var s = 0;
builder.Append($" ");
foreach (var prime in primes)
{
d++;
if (prime > cycle) break;
if(d>1)
builder.Append(" + ");
var cp = (cycle - prime);
s += cp * cp;
builder.Append($"({cycle} - {prime} = {cp})^2");
if (s > 0 && s % u == 0)
{
found = true;
Console.WriteLine($"{builder} = {s}, {s / u}, {d}");
Console.WriteLine("OK");
break;
}
}
builder.Clear();
if (found) break;
}
if (!found)
{
}
}
}
Console.WriteLine();
bool IsPrime(long n)
{
if (n < 2) return false;
if (n == 2) return true;
if (n % 2 == 0) return false;
for (long i = 3; i <= Math.Sqrt(n); i += 2)
{
if (n % i == 0) return false;
}
return true;
}