关于在p≠np环境下对质数筛查的算法设想----另行数表和区块数表的相互差集合映射

2021/5/20 20:58:34

本文主要是介绍关于在p≠np环境下对质数筛查的算法设想----另行数表和区块数表的相互差集合映射,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

根据我们对于质数的定义:“设有一个数x除了自身与1的乘积之外无其他的因数,则称为质数”。此处我们列:设有数X∈N+,且有数M,N∈N+,T={Mn|M,N∈N+,1<M≤X,1<N≤X}
若X∈T,则不是质数。
若x∉T,则是质数。
此时,我们容易知道:在可用的因数中,最小的数是2,因此T可二次简化范围:T={M
n|M,N∈N+,2≤M≤[X/2],2≤N≤[X/2]} (此处动用取整函数)

我们将T中数称为区块数表,将N+域中的待选数称为另行数表。(区块:在待选乘积数中的数表/集合。另行:在可能需要筛选的质数的数表/集合)

工作进程
1.初始化:
首先在区块数表中选择 i(i范围建议5~20) 个数进行相乘:
描述:

c++案例:

int a,b,i;
while (true)
{
	for (a = 2;a<=c;a++) {
		for (b= 2;b<=c; b++)
		{
			i = a * b;
			cout << i<<" ";
			}	
	}
	if (a == c+1) break;

这样,差于从0到i^2的所有数,留下的数便是第一波底数,纳入另行表中(除了一般数剩下的都是素数)
不断进行这样的操作。此时留下的素数之间不断调出区块互乘

最后以区块的形式进行运算(写到这一段的时候在下已经14小时没睡了,可能写错了,希望得到改正。而且数学基础和计算机的计算原理其实也不是特别好,只是有那么一个想法想分享一下,希望得到大大们的指点和改正)

这样,我们不需要“除”所有数,而是“乘以”已经被我们筛选出来的“净素数”;而素数越到后面会越来越少,因此几乎从10到100,从100到10000的计算量都是十分接近的
但是还有一个问题:对于需要“复数以上的素数相乘”的数应该如何筛选?

在下目前只有2个想法:
1:研究出函数式,挑选出可行脚标的子数列进行计算
2:为另行数列的存在数进行“多维互乘”(在一定条件下多互乘几下,因为在坐标轴上维度真的很高。)(感觉这个更不可行)

但是这个方法可行吗?在设想中可行。不过在下的能力不能让在下证明出来,而且最后可能会变成另一个“哥德尔数”
在狭域内的证明应该只需要在足够大的范围内算出一遍再差于已经计算出的素数集然后判断改正吧
希望有人看



这篇关于关于在p≠np环境下对质数筛查的算法设想----另行数表和区块数表的相互差集合映射的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程