Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> PHP

PHP การลบซ้ำของสองตัวเลข (Repeated Subtraction)

ตัวอย่างโค้ด

<?php
function repeated_sub($val_1, $val_2) {
    if ($val_1 % $val_2 == 0) {
        return floor((int)$val_1 / $val_2);
    }
    return floor(((int)$val_1 / $val_2) + repeated_sub($val_2, $val_1 % $val_2));
}

$val_1 = 1000;
$val_2 = 189;
echo "The repeated subtraction results in " . repeated_sub($val_1, $val_2);
?>

ผลลัพธ์

The repeated subtraction results in 18

คำอธิบาย

ฟังก์ชันนี้คำนวณผลรวมของ Quotients ใน Euclidean Algorithm (GCD Process):

  1. 1000 ÷ 189 = 5 เหลือ 55
  2. 189 ÷ 55 = 3 เหลือ 24
  3. 55 ÷ 24 = 2 เหลือ 7
  4. 24 ÷ 7 = 3 เหลือ 3
  5. 7 ÷ 3 = 2 เหลือ 1
  6. 3 ÷ 1 = 3 เหลือ 0

ผลรวม: 5 + 3 + 2 + 3 + 2 + 3 = 18

โค้ด Iterative Version (ดีกว่า Recursive)

<?php
function repeated_sub_iterative($a, $b) {
    $sum = 0;
    while ($b != 0) {
        $sum += (int)($a / $b);
        $remainder = $a % $b;
        $a = $b;
        $b = $remainder;
    }
    return $sum;
}

echo repeated_sub_iterative(1000, 189);  // 18
?>

ประโยชน์

  • เกี่ยวข้องกับ Euclidean Algorithm หา GCD
  • ใช้ใน Number Theory, Cryptography
  • Iterative Version ป้องกัน Stack Overflow