2017-01-30 39 views
1

我使用以下來找出共同的因數。如何在PHP中查找兩個數字的公約數?

但是在某些情況下不滿足除數計數。

我的代碼:

$x = 66928; 
    $y = 66992; 

    $c_a = []; 
    $c_b = []; 
    $d = 1; 
    while ($d_a <= $x) { 
     if (is_int($x/$d)) $c_a[] = $d; 
     $d++; 
    } 
    $d = 1; 
    while ($d_b <= $y) { 
     if (is_int($y/$d)) $c_b[] = $d; 
     $d++; 
    } 
    echo count($c_a); 
    echo count($c_b); 

    // Output 
    $c_a = 20; 
    $c_b = 20; 

因爲,在某些情況下,它不會工作。

這種計算方式是正確的嗎? 還是有什麼建議?

+0

你想計算兩個公因子的數量? –

+0

是的......此代碼不適用於大數字.. –

+0

有關大數字在php [更多信息](http://stackoverflow.com/questions/211345/working-with-large-numbers-in-php) – Ken

回答

2

根據在評論中提出的問題,要統計兩個沒有共同點的因素。會像這樣。

<?php 
$a = 66928; 
$b = 66992; 
$min = ($a < $b) ? $a : $b; 
$commomn_factors_count = 0; 
for ($i = 1; $i < $min/2; $i++) { 
    if (($a%$i==0) && ($b%$i==0)) { 
     $commomn_factors_count++; 
    } 
} 
var_dump($commomn_factors_count); 
+0

很好地完成了,這是正確的:) –

+1

您可以通過添加:'$ min/= 2;' – zenko

+0

@zenko來優化。謝謝, –

相關問題