我只是计算机科学的初学者。我学到了一些关于运行时间的知识,但我不能确定我的理解是正确的。所以请帮助我。
所以整数分解目前不是多项式时间问题,而是素性检验。假设要检查的数字是n。如果我们运行一个程序只是为了确定从 1 到 sqrt(n) 的每个数字是否可以整除 n,如果答案是肯定的,则存储该数字。我认为这个程序是多项式时间,不是吗?
我错的一种可能方法是分解程序应该找到所有素数,而不是发现的第一个素数。所以也许这就是原因。
然而,在公钥密码学中,找到一个大数的素因数对于攻击密码学至关重要。由于通常一个大数(公钥)只是两个素数的乘积,所以找到一个素数就意味着找到另一个素数。这应该是多项式时间。那么为什么攻击很难或不可能呢?