本文整理汇总了PHP中gcd函数的典型用法代码示例。如果您正苦于以下问题:PHP gcd函数的具体用法?PHP gcd怎么用?PHP gcd使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了gcd函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: Generate
function Generate($level)
{
if ($level <= 3) {
$num1 = pow(2, rand(2, 3));
$num2 = pow(2, rand(4, 5));
} elseif ($level <= 6) {
$num1 = pow(2, rand(1, 3)) * pow(3, rand(0, 1));
$num2 = pow(2, rand(1, 4)) * pow(3, rand(2, 3));
} else {
$num1 = pow(2, rand(1, 3)) * pow(3, rand(0, 3)) * pow(5, rand(0, 1));
$num2 = pow(2, rand(1, 4)) * pow(3, rand(0, 3)) * pow(5, rand(2, 3));
}
$gcd = gcd($num1, $num2);
$num3 = rand(1, 2) == 1 ? $gcd : $gcd / 2;
// // Original exercise
// $num1 = 48;
// $num2 = 120;
// $num3 = 12;
// $gcd = gcd($num1, $num2);
$correct = $num3 == $gcd ? 0 : 1;
$options = ['Igaz', 'Hamis'];
$solution = $options[$correct];
$question = 'Adja meg az alábbi állítás logikai értékét (igaz vagy hamis)!<br />' . The($num1, TRUE) . ' $' . $num1 . '$ és ' . The($num2) . ' $' . $num2 . '$ legnagyobb közös osztója ' . The($num3) . ' $' . $num3 . '$.';
$page[] = '<div class="alert alert-info"><strong>Közös osztó:</strong> az a szám, amivel mind a két szám osztható.</div>';
$page[] = '<div class="alert alert-info"><strong>Legnagyobb közös osztó:</strong> a közös osztók közül a legnagyobb. Az $a$ és $b$ számok legnagyobb közös osztóját $(a;b)$-vel jelöljük.</div>';
$page[] = 'A legnagyobb közös osztó kiszámításához először írjuk fel mindkét szám prímtényezős felbontását!';
$hints[] = $page;
$hints[][] = 'Az első szám prímtényezős felbontása: $' . $num1 . '=' . implode('\\cdot', $this->CanonicForm($num1)) . '$, ugyanis:' . $this->Factorization($num1);
$hints[][] = 'A második szám prímtényezős felbontása: $' . $num2 . '=' . implode('\\cdot', $this->CanonicForm($num2)) . '$, ugyanis:' . $this->Factorization($num2);
$page = [];
$page[] = 'Most gyűjtsünk össze a közös prímtényezőket (ha mindkét számban előfordul, akkor a kisebb kitevőt nézzük): $$(' . $num1 . ';' . $num2 . ')=' . implode('\\cdot', $this->CanonicForm($gcd)) . '=' . $gcd . '$$';
$page[] = 'Mivel a legnagyobb közös osztó ' . ($gcd == $num3 ? 'megegyezik' : 'nem egyezik meg') . ' ' . The($num3) . ' $' . $num3 . '$-' . With($num3) . ', ezért az állítás <span class="label label-success">' . strtolower($solution) . '</span>.';
$hints[] = $page;
return array('question' => $question, 'correct' => $correct, 'solution' => $solution, 'options' => $options, 'hints' => $hints);
}
示例2: fract_label
function fract_label($v)
{
# Add leading sign and make positive:
if ($v < 0) {
$result = '-';
$v *= -1;
} elseif ($v == 0) {
$result = '0';
} else {
$result = '';
}
# Process whole number part.
# Prepare for space between number and fraction.
if ($v >= 1) {
$whole = (int) $v;
$v -= $whole;
$result .= $whole;
$space_between = ' ';
} else {
$space_between = '';
}
# Process fractional part:
if ($v > 0) {
$p64 = (int) round($v * 64);
$factor = gcd($p64, 64);
$numerator = $p64 / $factor;
$denominator = 64 / $factor;
$result .= $space_between . $numerator . '/' . $denominator;
}
return $result;
}
示例3: gcd
function gcd($a, $b)
{
if ($b == 0) {
return $a;
}
return gcd($b, $a % $b);
}
示例4: gcd
function gcd($a, $b)
{
if (!b) {
return a;
} else {
return gcd(b, a % b);
}
}
示例5: gcd
function gcd($a, $b)
{
if ($a == 0) {
return $b;
} else {
return gcd($b, $a % $b);
}
}
示例6: lcd
function lcd($a, $b)
{
if ($a < $b) {
$c = $a;
$a = $b;
$b = $c;
}
return $a * $b / gcd($a, $b);
}
示例7: ritmo
function ritmo($durações)
{
$tempos = 0;
$unidade = max($durações);
foreach ($durações as $duração) {
$tempos += $unidade / $duração;
}
$gcd = gcd($tempos, $unidade);
$tempos /= $gcd;
$unidade /= $gcd;
return "{$tempos}/{$unidade}";
}
示例8: Generate
function Generate($level)
{
$m = pow(-1, rand(1, 2)) * rand(1, 2);
$b = rand(-5, 5);
$A[0] = pow(-1, rand(1, 2)) * rand(1, 10);
// Ax != 0
$A[1] = $A[0] * $m + $b;
$B[0] = -$A[0];
$B[1] = $B[0] * $m + $b;
// // Original exercise
// $A = [-3,-1];
// $B = [3,7];
// $m = ($A[1]-$B[1])/($A[0]-$B[0]);
// $b = $A[1] - $A[0]*$m;
// print_r('m='.$m.', b='.$b.'<br />');
// print_r('A('.$A[0].';'.$A[1].'), B('.$B[0].';'.$B[1].') <br />');
$mfrac['nom'] = ($B[1] - $A[1]) / gcd($B[1] - $A[1], $B[0] - $A[0]);
$mfrac['denum'] = ($B[0] - $A[0]) / gcd($B[1] - $A[1], $B[0] - $A[0]);
$question = 'Írja fel a hozzárendelési utasítását annak a lineáris függvénynek, mely $' . ($A[0] < 0 ? '(' . $A[0] . ')' : $A[0]) . '$-' . To($A[0]) . ' $' . ($A[1] < 0 ? '(' . $A[1] . ')' : $A[1]) . '$-' . Dativ($A[1]) . ' és $' . ($B[0] < 0 ? '(' . $B[0] . ')' : $B[0]) . '$-' . To($B[0]) . ' $' . ($B[1] < 0 ? '(' . $B[1] . ')' : $B[1]) . '$-' . Dativ($B[1]) . ' rendel! (A hozzárendelési utasítást $x\\mapsto mx+b$ alakban adja meg!)';
$page[] = 'A hozzárendelés egy $y=mx+b$ alakú lineáris függvény lesz.';
$page[] = 'A függvény $' . ($A[0] < 0 ? '(' . $A[0] . ')' : $A[0]) . '$-' . To($A[0]) . ' $' . ($A[1] < 0 ? '(' . $A[1] . ')' : $A[1]) . '$-' . Dativ($A[1]) . ' rendel, azaz:$$' . $A[1] . '=' . $A[0] . '\\cdot m+b$$';
$page[] = 'Továbbá azt is tudjuk, hogy $' . ($B[0] < 0 ? '(' . $B[0] . ')' : $B[0]) . '$-' . To($B[0]) . ' $' . ($B[1] < 0 ? '(' . $B[1] . ')' : $B[1]) . '$-' . Dativ($B[1]) . ' rendel, azaz:$$' . $B[1] . '=' . $B[0] . '\\cdot m+b$$';
$hints[] = $page;
$page = [];
$page[] = '$$\\begin{eqnarray}
I.\\quad& ' . $A[1] . '&=&' . $A[0] . '\\cdot m+b\\\\
II.\\quad& ' . $B[1] . '&=&' . $B[0] . '\\cdot m+b
\\end{eqnarray}$$
Vonjuk ki az első egyenletből a másodikat! Ekkor a $b$-s tagok kiesnek:$$\\begin{eqnarray}
' . $A[1] . (-$B[1] < 0 ? '' : '+') . strval(-$B[1]) . '&=&(' . $A[0] . (-$B[0] < 0 ? '' : '+') . strval(-$B[0]) . ')\\cdot m+b-b\\\\
' . strval($A[1] - $B[1]) . '&=&' . strval($A[0] - $B[0]) . '\\cdot m\\\\
\\frac{' . strval($A[1] - $B[1]) . '}{' . strval($A[0] - $B[0]) . '}&=&m\\\\
\\end{eqnarray}$$';
$page[] = 'Tehát az $m$ értéke <span class="label label-success">$' . (round($m) == $m ? $m : '\\frac{' . $mfrac['nom'] . '}{' . $mfrac['denum'] . '}') . '$</span>.';
$hints[] = $page;
$page = [];
$page[] = '$$\\begin{eqnarray}
I.\\quad& ' . $A[1] . '&=&' . $A[0] . '\\cdot m+b\\\\
II.\\quad& ' . $B[1] . '&=&' . $B[0] . '\\cdot m+b
\\end{eqnarray}$$
Most adjuk össze a két egyenletet! Ekkor az $m$-es tagok esnek ki:$$\\begin{eqnarray}
' . $A[1] . ($B[1] < 0 ? '' : '+') . $B[1] . '&=&(' . $A[0] . ($B[0] < 0 ? '' : '+') . $B[0] . ')\\cdot m+b+b\\\\
' . strval($A[1] + $B[1]) . '&=&2\\cdot b\\\\
\\frac{' . strval($A[1] + $B[1]) . '}{2}&=&b\\\\
\\end{eqnarray}$$';
$page[] = 'Tehát a $b$ értéke <span class="label label-success">$' . $b . '$</span>.';
$hints[] = $page;
$correct = [round1($m), $b];
$solution = '$m=' . round2($m) . '\\quad b=' . $b . '$';
return array('question' => $question, 'correct' => $correct, 'type' => 'array', 'solution' => $solution, 'hints' => $hints, 'labels' => ['$m$', '$b$']);
}
示例9: gcd
function gcd($m, $n)
{
if ($m < $n) {
return -1;
}
if ($n == 0) {
return $m;
}
$m = $m % $n;
if ($m == 0) {
return $n;
}
return gcd($n, $m);
}
示例10: gcd
function gcd($x, $y)
{
if ($x >= $y) {
$a = $x;
$b = $y;
} else {
$a = $y;
$b = $x;
}
if ($b <= 0) {
if ($b >= 0) {
return $a + 0;
}
}
return gcd($b + 0, $a - $b);
}
示例11: wrr
/**
* Weighted round-robin
*
* Adapted from LVS Weighted round-robin implementation
* (@see http://kb.linuxvirtualserver.org/wiki/Weighted_Round-Robin_Scheduling)
*
* @param array $S weights
* @param integer &$i current position
* @param integer &$cw current weight
* @return integer
*/
function wrr($S, &$i = -1, &$cw = 0)
{
if (!($n = count($S))) {
return null;
}
while (true) {
$i = ($i + 1) % $n;
if ($i == 0) {
$cw = $cw - gcd($S);
if ($cw <= 0) {
$cw = max($S);
if ($cw == 0) {
return null;
}
}
}
if ($S[$i] >= $cw) {
return $i;
}
}
}
示例12: cryptorsakeys
function cryptorsakeys($p, $q)
{
$n = $p * $q;
$phi = ($p - 1) * ($q - 1);
$e = 3;
while (gcd($e, $phi) != 1 && $e < $phi) {
$e++;
}
if ($e >= $phi) {
echo 'e bigger than phi - fail';
return;
}
list($d, $j, $k) = extended_gcd($e, $phi);
if ($d < 0) {
$d += $phi;
}
return array($n, $e, $d);
}
示例13: smd
function smd($num, $den)
{
$g = gcd($num, $den);
return $den / $g;
}
示例14: fractionreduce
function fractionreduce()
{
$args = func_get_args();
$retarr = false;
if (count($args) == 1) {
if (is_array($args[0])) {
$f = $args[0];
} else {
$f = fractionparse($args[0]);
}
} else {
if (count($args) == 2 && is_array($args[0])) {
$f = $args[0];
$retarr = $args[1];
} else {
if (count($args) == 2) {
$f = array($args[0], $args[1]);
} else {
if (count($args) == 3) {
$f = array($args[0], $args[1]);
$retarr = $args[2];
}
}
}
}
$g = gcd($f[0], $f[1]);
$f[0] /= $g;
$f[1] /= $g;
if ($f[1] < 0) {
$f[0] *= -1;
$f[1] *= -1;
}
if ($retarr) {
return $f;
}
if ($f[1] == 1) {
return $f[0];
} else {
return $f[0] . '/' . $f[1];
}
}
示例15: fraction_divide
function fraction_divide($level)
{
if ($level <= 3) {
$num1 = rand(1, 2);
$num2 = rand(1, 2);
$denom1 = rand(1, 3);
$denom2 = rand(1, 3);
} elseif ($level <= 6) {
$num1 = rand(3, 5);
$num2 = rand(3, 5);
$denom1 = rand(5, 10);
$denom2 = rand(5, 10);
} else {
$num1 = rand(5, 10);
$num2 = rand(5, 10);
$denom1 = rand(10, 20);
$denom2 = rand(10, 20);
}
$frac1 = $num1 / $denom1;
$frac2 = $num2 / $denom2;
$num = $num1 * $denom2;
$denom = $denom1 * $num2;
$gcd = gcd($num, $denom);
if ($gcd) {
$num /= $gcd;
$denom /= $gcd;
}
$question = 'Mennyi lesz az alábbi művelet eredménye? $$\\frac{' . $num1 . '}{' . $denom1 . '}:\\frac{' . $num2 . '}{' . $denom2 . '}$$';
$solution = '$\\frac{' . $num . '}{' . $denom . '}$';
$correct = array($num, $denom);
$type = 'fraction';
return array('question' => $question, 'correct' => $correct, 'solution' => $solution, 'type' => $type);
}