Ví dụ
<?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);
?>
Kết quả
It is an odd number
Giải thích
Hàm divisor_count đếm số ước của số cho trước. Duyệt i từ 1 đến √n. Nếu i chia hết n, thì i và n/i đều là ước. Nếu i² = n (ước kép) chỉ đếm 1. Cuối kiểm tra tổng ước chẵn/lẻ. Với 100: ước là 1,2,4,5,10,20,25,50,100 -> 9 ước (lẻ). Kết quả đúng.
Lưu ý: Số chính phương luôn có số ước lẻ (vì √n đếm 1 lần). Hàm in trực tiếp thay vì trả về bool, ít linh hoạt.