Stein算法Php实现

Stein算法Php实现function steincore($a,$b) {    if ($a == 0) {return $b;}    if ($b == 0) {return $a;}    while (($a & 1) == 0) {        $a=$a>>1;    }    if ($a<$b) {        $b=($b-$a)>>1;        return steincore($b,$a);    }    else {        $a=($a-$b)>>1;        return steincore($a,$b);    } }function stein($a,$b) {    $c=0;    while ((($a & 1)==0)&&(( $b & 1 )==0)) {        $a=$a>>1;        $b=$b>>1;        $c=$c+1;    }    if (($a & 1) == 0) {        $a=$a>>1;        return steincore($a,$b)<<$c;    }    else {        return steincore($b,$a)<<$c;    }}//通过改善流程省去了低效的a,b交换,同时用while循环代替了过多的递归,以节约空间和时间

//迭代过程化为子过程以减少不必要的判断//子过程中只有减法运算后的值可能为偶数所以只需要对$a判断是否为偶数

以上内容由大学时代综合整理自互联网,实际情况请以官方资料为准。

相关