2
$\开始组$

我发现了一种在素向量上进行CRT的新方法。

给定素数列表P和一些残差R=mod(n,P),例如:

P=[2 3 5 7 11]R=[1 0 3 1 9]

此matlab函数将重建原始数字:

函数[crt]=crt_mendi_clean(R,P)%2019年,Mendi Barel版权所有。%例如:n=434,P=素数(13),R=mod(n,P),[crt]=crt_mendi_clean(R,P)crt=0;%初始crt首次出现滞后=1;%具有滞后的init primorials。[1 2 6 30 210...]对于i=1:长度(R)p=p(i);r=r(i);u=mod(crt,p);对于j=0:p-1,如果mod(primorilag*j,p)==u,ju=j;中断、结束、结束对于j=0:p-1,如果mod(primorilag*j,p)==r,jr=j;中断、结束、结束v=mod(jr-ju,p);crt=crt+primorilag*v;primorilag=primorirag*p;结束结束

例如:crt_mendi_clean([1 0 3 1 9],[2 3 5 7 11])输出:603

唯一的限制是重建所需的明显限制:n<初级(P(结束)).

这是一种新算法吗?还是已经知道了?

$\端组$
2
  • 2
    $\开始组$ 实现gcd>1版本,可能会给我留下深刻印象。 $\端组$
    – 用户645636
    评论 2019年8月15日16:25
  • $\开始组$ @Roddy我已经做到了,但我正在使用“factor”函数并进行新的内部循环,以检查我是否已经使用了这个因子。看起来效果不错。 $\端组$ 评论 2019年8月15日17:22

0

重置为默认值

你必须登录来回答这个问题。