PHP 第三回目復習 ・その1 | ひろビッツのブログ

ひろビッツのブログ

ブログの説明を入力します。

4日目~~~

 

総!復!習!

 

今まで展開していた課題内容の総復習です

 

まずは1回目のサンプル実装!!

課題を基にどういう処理が必要???

と考えます。

すると、必要なのは

・小さいほうの数を1~順に割り算する。

・小さいほうで割り切れた数字で、大きいほうの数字が割り切れるか確認する。

・どちらが大きいか判断する処理が必要になる。

この3つの処理を作っていきます。

作る順番は

・どちらが大きいか判断する処理が必要になる。

・小さいほうの数を1~順に割り算する。

・小さいほうで割り切れた数字で、大きいほうの数字が割り切れるか確認する。

 

$l_no01 = 14; //変数設定
$l_no02 = 21; //変数設定
$a = 0; //設定した変数のうち、大きいほうを格納
$b = 0; //設定した変数のうち、小さいほうを格納
$c = 0; //計算結果格納用変数
$d = 0; //出力用変数
$l_loop = 0; //Loop用変数

 //設定した変数のうち、大きいほうを$a、小さいほうを$bに格納する
if( $l_no01 < $l_no02 ){
    $a = $l_no02;
    $b = $l_no01;    
}else{
    $a = $l_no01;
    $b = $l_no02;
}

//最大公約数は小さいほうの変数に存在することになるので、1,2,3,4,・・・と、小さいほうの整数と同じになるまで順にカウントします。
for($l_loop=1;$l_loop<=$b;$l_loop++)
{
    //小さいほうの変数を割り算し、余りを出します。
    //例1回目の繰り返しでは14/1=0 2回目の繰り返しでは14/2=0 
    // 3回目の繰り返しでは14/3=2 14/4=2 14/5=4 といった具合に$cに格納されていきます。
    $c = ($b % $l_loop);
    //割り切れたかどうかを確認します。
    if(0 == $c){
        //割り切れた場合、大きいほうの整数でも割り算をして余りを出します。
        $c = ($a % $l_loop);
        //割り切れたかどうかを確認します。
        if(0 == $c){
         //割り切れた場合、それが約数となるので、保存します。
            $d = $l_loop;    //割り切れていない場合はここに格納されないので問題ありません。
        }    
    }
}
//小さいほうの変数と同じになればすべての約数を確認したことになるので$d(格納していた約数)を出力します。
echo '最大公約数は'.$d.'  ';

//繰返しカウントを初期化します。
$l_loop = 0 ;

//最小公倍数の上限は小さいほうの整数と大きいほうの整数を掛け算した値になります。
//なので、小さいほうの整数に大きいほうの整数と同じになるまで繰り返し掛け算をする処理にします。
//※逆でもできます。
for($l_loop=1;$l_loop<$a;$l_loop++)
{
    //小さいほうを掛け算した結果が、大きいほうの整数で割り切れるか確認する
    $c = ($b * $l_loop) % $a;
    //割り切れたかどうか確認する
    if(0 == $c){
        //割り切れればそれが最小公倍数になるので表示します。
        echo '最小公倍数は'.($b * $l_loop);
        //繰返し処理を終了させます。
        //ここでやめないと公倍数が続々表示されます。
        break;
    }
}
//以上です。