2017-01-30 8 views
1

私は以下を使用して共通の約数を調べます。PHPで2つの数値の共通の除数を見つけるには?

ただし、除数の数が満たされない場合もあります。

マイコード:

$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

2つの共通要因の数を数えますか? –

+0

ええと...このコードは大きな数字では機能しません.. –

+0

PHPの大きな数字の詳細はこちら(http://stackoverflow.com/questions/211345/working-with-large-numbers-in-php) – Ken

答えて

2

コメントで質問されたとおり、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 ..ありがとう、 –

関連する問題