php 분수 더하기 분수 표현

php 분수 더하기 분수 표현

QA

php 분수 더하기 분수 표현

본문

1/6 + 2/10 = 11/30

처럼 분수 더하기 분수를 분수로 표현하고 싶습니다.

이때, 숫자를 랜덤으로 발생하여 $a/$b + $c/$d 형식에서

$a=mt_rand(1,9);

$b=mt_rand(1,9);

$c=mt_rand(1,9);

$d=mt_rand(1,9);

$a/$b + $c/$d = e/f

로 표현 할 때 분모가 분수보다 작게 표현 하였으면 합니다.

이 질문에 댓글 쓰기 :

답변 3

최대공약수, 최소공배수

https://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=13184

 


<?php
$a=mt_rand(1,9);
$b=mt_rand(1,9);
$c=mt_rand(1,9);
$d=mt_rand(1,9);
$e = min(array($a,$b));
$f = max(array($a,$b));
$g = min(array($c,$d));
$h = max(array($c,$d));
echo $a.' '.$b.' '.$c.' '.$d.'<br>';
echo $e.' '.$f.' '.$g.' '.$h.'<br>';
// 최대공약수
function gcd($a, $b) {
    return ($b) ? gcd($b,$a%$b) : $a;
}
// 최소공배수
function lcm($a, $b) {
    return $a * $b / gcd($a, $b);
}
$x = lcm($f, $h);
echo 'lcm: '.$x.'<br><br>';
$i = $e * ($x/$f);
$j = $g * ($x/$h);
echo $i.'/'.$x.' + '.$j.'/'.$x.' = ' . ($i + $j) . '/' . $x .'<br>';
$k = floor(($i + $j) / $x);
echo  $i.'/'.$x.' + '.$j.'/'.$x.' = ' . ($k ? $k.' & ' : '') . (($i + $j) % $x) . '/' . $x . '<br>';

 


7 5   8 4
5 7   4 8 // 큰 수를 분모로
lcm: 56 // 7과 8의 최소공배수 
40/56 + 28/56 = 68/56 // 분자에 최소공배수를 곱해주고 분모는 최소공배수
40/56 + 28/56 = 1 & 12/56

 

68/56 약분을 해야하는데...

분자와 분모의 최대공약수로 나누면 되겠죠?

gcd(68,56) = 4

($a>$b ? $a/$b : $b/$a) + ($c>$d ? $c/$d : $d/$c)

답변을 작성하시기 전에 로그인 해주세요.
전체 20
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT