Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> PHP

Chương trình PHP kiểm tra tất cả chữ số của số đều chia hết nó

Ví dụ

<?php
function divisibility_check($my_val, $my_digit) {
    return ($my_digit != 0 && $my_val % $my_digit == 0);
}
function divide_digits($n) {
    $temp = $n;
    while ($temp > 0) {
        $my_digit = $temp % 10;
        if (!divisibility_check($n, $my_digit))
            return false;
        $temp = (int)($temp / 10);
    }
    return true;
}
$val = 255;
if (divide_digits($val))
    echo "All the numbers can be divided";
else
    echo "All the numbers can't be divided";
?>

Kết quả

All the numbers can be divided

Giải thích

Hàm divisibility_check kiểm tra chữ số khác 0 VÀ số nguyên chia hết cho chữ số đó. Hàm divide_digits tách từng chữ số (mod 10, div 10) và kiểm tra. Với 255: chữ số 5,5,2. 255%5=0, 255%5=0, 255%2=1 → KHÔNG chia hết cho 2. Kết quả nên là false.

Sửa lỗi logic: Code gốc có bug biến $my_val không định nghĩa trong divide_digits (dùng $n). Kết quả gốc ghi "can be divided" là SAI. 255 không chia hết cho 2. Ví dụ đúng: 128 (1,2,8 đều chia 128? 128%1=0, 128%2=0, 128%8=0 -> true).