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

PHP ตรวจสอบจำนวน Divisors เป็นคู่หรือคี่

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

<?php
function divisor_count($my_val) {
    $my_count = 0;
    for ($i = 1; $i <= sqrt($my_val) + 1; $i++) {
        if ($my_val % $i == 0) {
            $my_count += ($my_val / $i == $i) ? 1 : 2;
        }
    }
    if ($my_count % 2 == 0) {
        echo "It is an even number\n";
    } else {
        echo "It is an odd number\n";
    }
}

divisor_count(100);
?>

ผลลัพธ์

It is an odd number

คำอธิบาย

  1. Loop $i จาก 1 ถึง √n
  2. ถ้า $i หาร $my_val ลงตัว → พบ Factor Pair ($i, $my_val/$i)
  3. ถ้า $i == $my_val/$i (Perfect Square) → Count +1, มิฉะนั้น +2
  4. ตรวจสอบ $my_count เป็นคู่หรือคี่

Mathematical Insight

จำนวน Divisors (τ(n) หรือ d(n)) เป็น Odd ก็ต่อเมื่อ n เป็น Perfect Square

เพราะ Factors มักอยู่คู่ (a, b) ที่ a×b=n แต่ Perfect Square มี Factor กลางที่ซ้ำ (√n, √n)

ตรวจสอบ 100

100 = 10² (Perfect Square) → Divisors Count = Odd

Divisors: 1, 2, 4, 5, 10, 20, 25, 50, 100 (9 ตัว = Odd) ✓

Optimized Version

<?php
function divisor_parity($n) {
    $sqrt = (int)sqrt($n);
    return ($sqrt * $sqrt == $n) ? "odd" : "even";
}

echo "100: " . divisor_parity(100) . "\n";  // odd
echo "101: " . divisor_parity(101) . "\n";  // even (prime)
echo "36: " . divisor_parity(36) . "\n";    // odd (6²)
?>

ผลลัพธ์

100: odd
101: even
36: odd

เพียงเช็ค Perfect Square ก็พอ ไม่ต้องนับ Divisors ทั้งหมด!