求最大公约数的两种方法

来源:互联网 发布:里约中国男篮数据 编辑:程序博客网 时间:2024/05/16 02:14
辗转相除+递归#include<stdio.h>int gcd(int a, int b){     printf("%d\n", b);          //打印中间数     return a%b ? gcd(b, a%b) : b; }int main(){     int a, b;     scanf("%d%d", &a, &b);     gcd(a, b);     return 0;}更相减损+递归#include<stdio.h>int gcd(int a, int b){     printf("%d\n", b);        //打印中间数     return a>b ? a-b?gcd(b,a-b):b : b-a?gcd(a,b-a):a; }int main(){     int a, b;     scanf("%d%d", &a, &b);     gcd(a, b);     return 0;}欧几里得算法+迭代#include<stdio.h>int gcd(int a, int b){      int i;      while(b) {      i=a%b;      a=b;      b=i;      printf("%d\n", a);        //打印中间数     }     return a;}int main(){     int a, b;     scanf("%d%d", &a, &b);     gcd(a, b);     return 0;}似乎只有在输入相同数字或相邻斐波那契数时,辗转相除和更相减损两种方法进行同样多的操作。亦即最坏情况。
取模运算效率不高,得改改了;
待更

0 0
原创粉丝点击