php計算兩個整數的最大公約數常用演算法
<?php
//計時,返回秒
function microtime_float ()
////歐幾里得演算法
function ojld($m, $n)
if($n == 0)
while($n != 0)
return $m;}//
//基於最大公約數的定義
function basedefine($m, $n)
$min = min($m, $n);
while($min >= 1)
}$min -= 1;
}return $min;
}//中學數學裡面的計算方法
function baseschool($m, $n)
$c = 1;
foreach($mz as $v) }}
//n所有質因數
foreach($np as $v)
$c = 1;
foreach($nz as $v) }}
//公因數
$jj = array_intersect($mz, $nz); //取交集
$gys = array();
//取出在倆數中出現次數最少的因數,去除多餘的。
$c = 1; //記錄數字出現的次數
$p = 0; //記錄上一次出現的數字
sort($jj);
foreach($jj as $key => $v)
elseif($p != 0)
$p = $v;
$mk = array_keys($mz, $v);
$nk = array_keys($nz, $v);
$k = ( count($mk) > count($nk) ) ? count($nk) : count($mk);
if($c > $k)
}$count = 1;
foreach($jj as $value)
return $count;
}//求給定大於等於2的整數的連續質數序列
//埃拉託色尼篩選法
function getlist($num)
for( $i = 2; $i <= floor( sqrt($num) ); $i++ ) }}
$p = 0;
for($i = 2; $i <= $num; $i++)
}return $l;}/
//test
$time_start = microtime_float ();
//echo ojld(60, 24); seconds
//echo basedefine(60, 24); seconds
echo baseschool(60, 24); seconds
$time_end = microtime_float ();
$time = $time_end - $time_start ;
echo '
' . sprintf('%1.10f', $time) . 'seconds';
求兩個正整數的最大公約數
基本要求 從鍵盤輸入兩個整數,輸出兩個整數的最大公約數。用c或c 語言實現程式解決問題。1.程式風格良好 使用自定義注釋模板 2.使用三種演算法解決問題 3.提供友好的輸入輸出,並進行輸入資料的正確性驗證 方法一 窮舉法 窮舉法,顧名思義,就是乙個乙個試,即遍歷兩個整數中較小的數到零的所有數,如果能...
求兩個正整數的最大公約數
求兩個正整數的最大公約數問題 版本 v1.0 主要功能 1 輾轉相除法 a b得餘數c 若c 0,則b即為兩數的最大公約數,結束 若c 0,則a b,b c,再回去執行 2 相減法 兩整數a和b 若a b,則a a b 若a b,則a 或b 即為兩數的最大公約數,結束 若a b,則再回去執行 3 窮...
求兩個數最大公約數
題目 寫乙個程式,求兩個正數的最大公約數。如1100100210001,120200021,求其最大公約數 分析 設兩個數分別為x,y 求其最大公約數f x,y 如果有x 2 0而y 2不等於0,那麼可以 約簡為f x 2,y 同樣道理適用於y 如果x與y都是偶數,那麼最大公約數可以為f x 2,y...