常用的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程序设计有所帮助。