我想知道是否可以执行以下操作:
我们有:
X
是N
-primes 的乘积,因此我假设是唯一的。C
是一个常数。我们可以保证这C
是一个是否属于N
-primes 的数字。无论哪种方式效果最好。X mod C = Z
我们有Z
并且C
我们知道这X
是N
-primes 的乘积,其中N
受限的地方可以说是前 100 个素数。
无论如何我们可以回来X
吗?
我不这么认为。因为 C 不是 X 的一部分,所以在执行 X mod C 操作时会丢失信息。此外,mod 只返回操作的一部分,并且需要 div 来获取结果的另一部分。
示例:(3*5) % 7 = 1。因为您丢失了信息,所以我看不出有任何方法可以在没有 div 部分的情况下直接从 1 和 7 回到 15。您必须开始将 7s 相加并添加余数并进行比较以模拟等式中缺少的 div 部分。
不,这是一个反例:
假设 X = 105 ( = 3x5x7 )。
取 C = 13,使得 X mod C = Z = 1。
然而 X = 118 ( = 2x59 ) 也给出 Z = 1 和 C = 13。
您的问题很难理解,但也许您想阅读有关中国剩余定理的信息。
我们需要更多信息来为您解决这个问题。例如,如果您的意思是 X 是前 N 个素数的乘积,N <= 100,那么蛮力搜索将为您工作。
如果您的意思是 X 是前 100 个素数的某个子集的乘积,那就更难了。您本质上是在询问您是否可以判断 X 是否平滑给定 X mod Z。如果您能做到这一点,您可能能够改进最知名的整数分解算法,因为它们依赖于检测各种形式的平滑数.
当然,如果你可以选择足够大的 C 使得 X mod C = X,那就很容易了。
有关平滑数字的讨论,请参见http://en.m.wikipedia.org/wiki/Smooth_number。
我不确定我是否正确理解了您的问题,但是如果给您 Z 和 C 并且您想计算 X。
如果 X mod C = Z,那么这意味着对于某个自然数 q,它成立 qC+Z = X,因为 q 是未知的,所以一般不可能精确地计算 X,然而,有一个无限的数集满足这个方程。这也不奇怪。假设您有一些 X' 可能是解决方案,那么 X'' = X'+C 也是同样有效的解决方案。
如果我没记错的话,C 和 X 是否互质(即它们(不)具有共同的质因数)无关紧要。但是,它会使您的解决方案集更小一些,因为如果 X 和 C 有共同的素因数,例如 p1,p2,...pn,那么每个有效解决方案也应该可以被 p1*p2*...*pn 整除。
有无限的素数(因此有无限的N
素数乘积),但只有C
的可能值X mod C
。X
因此,以压倒性的概率,将存在满足的无限有效X mod C = Z
。
因此,如果您要确定其中哪一个是您的原件X
,那么不,那是做不到的。