常用的PHP的GCD算法计算两个整数的总结

这个例子讲的是最大公约数算法的故事,用php进行的两个整数计算。分享给大家,供大家参考:

复制代码代码如下:< PHP

返回时间秒

microtime_float()函数

{

列表(USEC美元美元,SEC)=爆炸(

返回((浮动)$ USEC +(浮动)$秒);

}

中的

欧几里德算法

功能ojld($,$ N){

如果($ = 0 = $ = 0){

返回false;

}

如果($ = 0){

返回$ M;

}

而(N美元)!= 0){

美元=美元;

美元= N;

美元= R;

}

返回$ M;

}

中的

基于GCD / /的定义

功能basedefine($,$ N){

如果($ = 0 = $ = 0){

返回false;

}

$ min(m,n);

当($ min = 1){

如果($ $ $ min = 0){

如果(0)

返回$ min;

}

}

$ = 1;

}

返回$ min;

}

中的

中学数学中的计算方法

功能baseschool($,$ N){

$ MP =列表($m); / /以内的所有素数$m

NP = GETLIST美元(N); / /以内的所有素数N亿美元

$ MZ =阵列($m); / /保持质量的因素

$ =数组($ n);保持质量因数

百万美元=百万美元;

台币= N元;

/ /米质量的因素

所有的m /素数遍历,当可以由m除以下一个除法,不能被整除时,可以由m整除。

素数,直到素数的所有乘积等于m时停止。

foreach($ MP达v){

当($百万美元$ = 0){

$mz{} = $v;

百万美元=百万公吨;

}

$=1;

foreach($ MZ达v){

美元= v;

如果($ = $ m =){

突破2;

}

}

}

所有品质因子

foreach($ NP为$ V){

当($新台币$ = = 0){

$新元= $ v;

台币=元/元;

}

$=1;

foreach(NZ $ $ V){

美元= v;

如果($ = n = n){

突破2;

}

}

}

/共同因素

JJ = array_intersect美元($ MZ,NZ $); / /取交集

$ GYS =阵();

删除数中出现的最小数量因子,去掉多余的因子。

$ = 1;记录号出现

$ p=0;在数字上记录

排序(JJ);

foreach(JJ美元美元美元关键= v){

如果($ = $ p =){

C++美元;

}

($ P!= 0){

$=1;

}

美元=美元;

MK = array_keys美元($ MZ,$ V);

$ NK = array_keys(NZ $,$ V);

$ =(计数($ MK)>计数(NK))计数(NK):计数($ MK);

如果($ $ K){

unset($ JJ { $关键});

}

}

$=1;

foreach(JJ美元美元值){

$ = $值;

}

返回$计数;

}

给定整数素数的大于或等于2的连续序列

屏蔽法

功能列表($num){

$ =数组();

$ =数组();

($ i = 2;$ i $;$;$ + +){

一美元;

}

为($我= 2;$i <=楼(sqrt($num));$ i++){

如果($ { $ I })!= 0){

美元= $ i I;

当($ j $){

$ $ { } = 0;

$ j = $ J + $ I;

}

}

}

$ = 0;

($ i = 2;$ i $;$;$ + +){

如果($ { $ I })!= 0){

$ $ { $ } = $;

美元+;

}

}

退回美元;

}



测试

time_start美元= microtime_float();

/ /回声ojld(60, 24); / / 0.0000450611秒

/ /回声basedefine(60, 24); / / 0.0000557899秒

回声baseschool(60, 24); / / 0.0003471375秒

time_end美元= microtime_float();

时间time_end美元美元美元time_start;

回波。sprintf(% 1.10f ','时间'seconds美元);

希望本文能对大家的PHP程序设计有所帮助。