mapaler 2019-12-17
穷举法
穷举范围: t=min(a,b)
从t开始逐次减1,并进行检验 第一个满足条件即可
辗转相除法 (欧几里得法)
do{ //计算a,b的最大公约数 r=a%b; a=b; b=r; }while(r!=0);
更相损减法
int gcd(int a,int b) { if(a==b) return a; else if(a>b) return gcd(a-b,b); else return gcd(a,b-a); } int gcd(int a,int b) { while(a!=b) { if(a==b) return a; if(a>b) a=a-b; else b=b-a; } }
void reverse(int n) { while(n!=0) { printf("%d",n%10); n /= 10; } printf("\n"); } //改进:引入动态局部变量 void reverse(int n) { int a; int sum=0; while(n!=0) { a=n%10 //printf("%d",n%10); sum=sum*10+a; n /= 10; } //printf("\n"); return sum; }