Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在二次筛选技术的筛选步骤中使用对数_Java_Cryptography_Rsa_Logarithm - Fatal编程技术网

Java 如何在二次筛选技术的筛选步骤中使用对数

Java 如何在二次筛选技术的筛选步骤中使用对数,java,cryptography,rsa,logarithm,Java,Cryptography,Rsa,Logarithm,我正在做一个程序来计算大的半素数。我使用的是简单的二次筛技术。我的程序运行得很好,但速度要慢得多,因为在筛选过程中(当我寻找B-平滑数时),我使用了除法过程(Java“BigInteger”类的除法)。我听说用对数代替除法可以使它快得多。现在我知道对数是如何工作的,但我不明白如何拟合对数运算符而不是除法,因为在筛选过程中,我需要对数字进行除法,以找到所有的素因子 以下是一个例子: N=15347,需要计算的数字。 rootN=Ceil(sqrt(N))=124,因子基数{2,17,23,29}

我正在做一个程序来计算大的半素数。我使用的是简单的二次筛技术。我的程序运行得很好,但速度要慢得多,因为在筛选过程中(当我寻找B-平滑数时),我使用了除法过程(Java“BigInteger”类的除法)。我听说用对数代替除法可以使它快得多。现在我知道对数是如何工作的,但我不明白如何拟合对数运算符而不是除法,因为在筛选过程中,我需要对数字进行除法,以找到所有的素因子

以下是一个例子:

N=15347,需要计算的数字。 rootN=Ceil(sqrt(N))=124,因子基数{2,17,23,29}

Q(x)=(124+x)^2-N

现在,对于一些x,我们需要找到Q(x),它们在因子基础上被完全分解:

Q(0)=(124+0)^2-N=29=2^0+17^0+23^0+29^1:B-光滑数

Q(1)=(124+1)^2-N=278=未完全考虑系数基数

Q(2)=(124+2)^2-N=529=2^0+17^0+23^2+29^0:B-光滑数

Q(3)=(124+3)^2-N=782=2^1+17^1+23^1+29^0:B-光滑数

等等,

所以,为了确定B-光滑数,我们需要尝试用因子基的所有素数和它们的最大可能指数除以Q(x)。我还使用了Tonelli–Shanks算法来加速寻找B-平滑数。我仍然需要mod和division过程来确定Q(x)是否是B-平滑的

现在我不明白如何使用对数来避免除法,这有助于快速找到B-平滑数


谢谢。

因子基素数2、17、23和29的对数分别为0.7、2.8、3.1和3.4。四个Q中因子基素数的和是Q(0)=3.4,Q(1)=0.7,Q(2)=6.2和Q(3)=6.6。如果您设置了一个限制,即对数和大于3的所有Q都是“可能平滑的”,那么您将通过在因子基础上尝试除法来计算Q(0)、Q(2)和Q(3),并确认这三个因子确实是平滑的(请注意,529=23*23在因子基础上是平滑的,即使您声明不是如此)。

非常感谢您,我根据你的陈述修改了我的问题。我不明白这句话“四个Q中的因子基素数之和是Q(0)=3.4,Q(1)=0.7,Q(2)=6.2和Q(3)=6.6。”当你使用对数时,你不应该有这些信息,除了找到Q(x),不知何故,他们使用了一些素数的对数值相加,并得到反对数来得到Q(x).筛子将对数相加。完成筛选后,扫描超过阈值的日志和。不需要反日志。如果这对您有帮助的话,我有Python代码。谢谢。请你用一个小例子来解释,或者你可以用你的程序生成一个例子来帮助理解这些步骤。平滑数是所有素数(从因子基)的组合,其指数从零开始到某个整数。我不需要任何代码。谢谢你,看。在博客的第二页有一个完整的例子。哦,那是你的博客!我在这里提交问题之前读过这篇文章。它不包含我正在寻找的信息。无论如何,谢谢你的回复。