以下是我的回答:可以这样写,先用explode从分数线(/)进行分隔,分成a1,a2 b1,b2,四个数字,再算公倍数,a2*b2=c2,然后算出总的结果:(a1*b2+ a2*b1)/c2,假设得到的结果:d2/c2,再算公约。先判断分子大还是分母大,如果分母大,if(d2%c2==0){//$gy=d2/c2 //$gy就是公约。当然一定要除去1,因为大家知道1是任何数的公约数。};根据这个方法,自己写个类或函数是可以解决的。
解决方案 »
- 找个精通PHP和JS的高手来解决问题.
- jquery....
- 技术探讨:谁做过百度“知道”接口的开发?
- 问题很低级,就想搞明白,请指教
- 大侠何在,采集数据被封ip该怎么办,
- 关于CMS的选择。。。。Joomla or SS
- 自己制作了一套symfony2视频教程和laravel4视频教程,分享一下
- 微信扫码支付的问题
- 一处奇怪的代码,求解。。
- 后台登陆的时候,明明看见后台文件存在,但是浏览器确提示404nofound 不过换个域名又可以正常访问。但是用之前的域名就是nofound,太奇怪了
- 点击[支持]页面不刷新,但支持量增1的效果。
- 请教一个问题,如何将ecshop的dwt模板文件改成html文件
$s = '1/4+1/5';preg_match_all("#((\d+)/(\d+))([-+/*]*)#", $s, $reg);for($i=0; $i<count($reg[1]); $i++) {
$d[] = array($reg[2][$i], $reg[3][$i]);
$f[] = $reg[4][$i];
}foo($d[0], $d[1]);$a = eval("return {$d[0][0]} {$f[0][0]} {$d[1][0]};");
$y = gcd($a, $d[0][1]);echo $a/$y . '/'. $d[0][1]/$y;/** 通分 **/
function foo(&$a, &$b) {
$f = $a[1] * $b[1];
$a = array($a[0] * $f/$a[1], $f);
$b = array($b[0] * $f/$b[1], $f);
}/**
辗转相除求最大公约数
**/
function gcd($a, $b) {
if($a % $b)
return gcd($b, $a % $b);
else
return $b;
}
code=PHP]function gcd($a,$b){
while($a != $b){
if($a > $b){
$a -= $b;
}else{
$b -= $a;
}
}
return $a;
}[[/code]
//计算两个数的最小公倍数
function lcm($a,$b){
return $a/gcd($a,$b)*$b/gcd($a,$b)*gcd($a,$b);
}$sum = '1/6+1/4';
$num = explode('+',$sum);
$num1 = explode('/',$num[0]);
$num2 = explode('/',$num[1]);
//求和
echo lcm($num1[1],$num2[1])/$num1[1] + lcm($num1[1],$num2[1])/$num2[1] .'/'. lcm($num1[1],$num2[1]);
function gcd($a,$b){
while($a != $b){
if($a > $b){
$a -= $b;
}else{
$b -= $a;
}
}
return $a;
}
//计算两个数的最小公倍数
PHP codefunction lcm($a,$b){
return $a/gcd($a,$b)*$b/gcd($a,$b)*gcd($a,$b);
}
PHP code$sum = '1/6+1/4';
$num = explode('+',$sum);
$num1 = explode('/',$num[0]);
$num2 = explode('/',$num[1]);
//求和
echo lcm($num1[1],$num2[1])/$num1[1] + lcm($num1[1],$num2[1])/$num2[1] .'/'. lcm($num1[1],$num2[1]);
<?php
//计算两个数的最大公约数
function gcd($a,$b){
if($a % $b){
return gcd($b,$a % $b);
}else{
return $b;
}
}
//计算两个数的最小公倍数
function lcm($a,$b){
return $a/gcd($a,$b)*$b/gcd($a,$b)*gcd($a,$b);
}$sum = '2/3+2/3';
$num = explode('+',$sum);
$num1 = explode('/',$num[0]);
$num2 = explode('/',$num[1]);
if(gcd(((lcm($num1[1],$num2[1])/$num1[1])*$num1[0] + (lcm($num1[1],$num2[1])/$num2[1])*$num2[0]),lcm($num1[1],$num2[1])) == 1){
echo ((lcm($num1[1],$num2[1])/$num1[1])*$num1[0] + (lcm($num1[1],$num2[1])/$num2[1])*$num2[0]).'/'. lcm($num1[1],$num2[1]);
}else{
echo ((lcm($num1[1],$num2[1])/$num1[1])*$num1[0] + (lcm($num1[1],$num2[1])/$num2[1])*$num2[0])/gcd(((lcm($num1[1],$num2[1])/$num1[1])*$num1[0] + (lcm($num1[1],$num2[1])/$num2[1])*$num2[0]),lcm($num1[1],$num2[1])).'/'. lcm($num1[1],$num2[1])/gcd(((lcm($num1[1],$num2[1])/$num1[1])*$num1[0] + (lcm($num1[1],$num2[1])/$num2[1])*$num2[0]),lcm($num1[1],$num2[1]));
}
?>