找到所有二次残差的算法nn

计算科学 算法
2021-12-09 02:46:43

元素 mathbb{Z}_n中的二次余数,如果它与某个完全平方模一致。aZnZnn

是否有一种有效的算法来找到中的所有二次残差?是复合的,如果有帮助,我们知道它的所有因素。Zn
n

更新

我们还有一个限制: =,其中是不同的奇素数,在这种情况下我们能得到一些东西吗?np1p2pkpipi3(mod4)


我目前使用以下方法:
迭代n2+10开始的完美正方形,并随时存储它们。问题是随着n的增长它会很快变慢n这是代码示例:

#include <stdio.h>

int main() {
    int n = 7 * 11;
    int qr = 0;
    int step = 1;

    for (int i = 0;i <= n / 2;i++) {
        printf("qr: %i\n", qr);

        // perform some operation on qr here
        // e.g. store it somewhere to access later

        qr = (qr + step) % n;
        step += 2;
    }

    return 0;
}
1个回答

你需要解决

(p11)2(p21)2(pk1)2

形式的同余系统,其中使用中国剩余定理。x=q(mod pi)q12,22,32,,((pi1)2)2

这将为您提供所有不同的 平方解决方案。(p11)/2 (p21)/2(pk1)/2