程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 編程之美:最大公約數問題

編程之美:最大公約數問題

編輯:C++入門知識


/*
最大公約數
*/
#include 

/*
方法1:輾轉相除
缺點:對於大整數,取模運算開銷大
*/
int gcd(int x,int y){
	return y==0?x:gcd(y,x%y);
}

/*
方法2:
缺點:迭代次數過多
*/
int gcd2(int x,int y){
	if(x>1,y>>1)
若x為偶數,y為奇數,f(x,y)=f(x>>1,y)
若x為奇數,y為偶數,f(x,y)=f(x,y>>1)
若x,y均為奇數,f(x,y)=f(x,x-y)
*/
int gcd3(int x,int y){
	if(x>1,y>>1)<<1;
			return gcd3(x>>1,y);
		}
		else{
			if(!(y&1))
				return gcd3(x,y>>1);
			return gcd(y,x-y);
		}
	}
}
int main(){  
	int a=12,b=8;

	printf("%d\n%d\n%d\n",gcd(a,b),gcd2(a,b),gcd3(a,b));
	
    return 0;  
}  


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved