求最大公約數

2021-07-29 08:35:15 字數 1191 閱讀 9816

最新用了三種演算法實現了求最大公約數的演算法,用的c++寫的,最大公約數也是我們生活中常見的問題

1、窮舉法

主要**如下:

if(a>b)

for(i=1;i<=a;i++)

演算法分析:窮舉法先將a,b兩值比較大小並且互換,再進行與各種數的整除,如果這個數能同時被a,b整除,那麼這個數就為最大公約數,這種演算法也是最常見的方法,小學時候經常用,但計算量太大,人腦還行,計算機進行大量的從1開始的迴圈,所以覺得不是那麼好

2、輾轉相除法

主要**如下:

while(a!=0)

cout<

演算法分析:輾轉相除法算是集中演算法裡我認為比較簡單的了,只需要將a,b相除,他們的餘數再進行相除,演算法複雜度也比較簡單,但缺點是不能使人一眼望去就知道它是在求什麼東西,必須經過分析,不過計算機最強的就是分析,不需要太多沒用的一眼,只需要演算法簡單就行

3、輾轉相減法

**如下:

while(a != b)    

else     

}   

cout<

演算法分析:輾轉相減法通過大量的減法賦值,通過a,b的差來尋找他們的最大公約數,經過多次的加減以後,a,b最終相等,得到最大公約數,但同樣,演算法複雜度較高,並且此種方法也並不是太過明了,進行大資料運算時太過遲鈍,不建議使用

全部**:

#include

using namespace std;

void menu();//選單

void poor();//窮舉法

int devide();   //輾轉相除法

void minus();    //輾轉相減法

int k=1;

int main()

system("pause");

return 0;

}void menu()

}void poor() 

for(i=1;i<=a;i++) 

cout<

int a,b; 

cout<>a>>b;

if(a<=0||b<=0) return 0;

while(a!=0)

cout<

int a,b; 

cout<>a>>b;

while(a != b)  

else   

}   

cout<

求最大公約數

暴力列舉法很簡單,從較小整數的一班開始,試圖找到乙個合適的整數i,檢查這個整數i是否被a和b同時整除 暴力列舉法求最大公約數 param a param b return public static int getgreatestcommondivisor v1 int a,int b for in...

求最大公約數

1.輾轉相除法 a.具體思路 兩個正整數a和b a b 它們的最大公約數等於a除以b的餘數c和b之間的最大公約數。比如10和25,25除以10商2餘5,那麼10和25的最大公約數,等同於10和5的最大公約數。有點類似動態規劃的思想,逐步減小問題規模,最後求到問題的解。int test1 int a,...

求最大公約數

輾轉相除法 輾轉相除法是求兩個自然數的最大公約數的一種方法,也叫歐幾里德演算法。例如,求 319,377 319 377 0 餘319 319,377 377,319 377 319 1 餘58 377,319 319,58 319 58 5 餘29 319,58 58,29 58 29 2 餘0 ...