SYNCERのロゴ
アイキャッチ画像

最大公約数を求める方法

PHPで最大公約数を求めるには、array_reduce()を利用しましょう。

サンプルコード

対象の数値群を配列で指定して下さい。

$array = [ 24, 12, 8, 36 ] ;

function callback( $a, $b ) {
	if( $a === 0 ) return $a ;

	$diff = $a > $b ? $a - $b : $b - $a ;
	$A = $diff ;
	$B = $b ;

	if( $B - $A ) {
		$A = $b ;
		$B = $diff ;
	}

	while( true ) {
		if( $B === 0 ) return $A ;
		$A %= $B ;
		if( $A === 0 ) return $B ;
		$B %= $A ;
	}
}

$response = array_reduce( $array, "callback" ) ;

デモ

$array = [ 24, 12, 8, 36 ] ;

function callback( $a, $b ) {
	if( $a === 0 ) return $a ;

	$diff = $a > $b ? $a - $b : $b - $a ;
	$A = $diff ;
	$B = $b ;

	if( $B - $A ) {
		$A = $b ;
		$B = $diff ;
	}

	while( true ) {
		if( $B === 0 ) return $A ;
		$A %= $B ;
		if( $A === 0 ) return $B ;
		$B %= $A ;
	}
}

$response = array_reduce( $array, "callback" ) ;

var_dump( $response ) ;
int(4)
  • Twitterでシェア
  • Facebookでシェア
  • Google+でシェア
  • はてなブックマークでシェア
  • pocketに保存
  • LINEでシェア
更新履歴
2017年6月22日 (木)
コンテンツを公開しました。