【C语言】最大公约数(更相减损法)和(辗转相除法)

#include<stdio.h>#include <math.h>/*编写一个函数,传入a,b两个int类型的变量,返回两个值的最大公约数。例如:输入传入(0 , 5)函数返回5,传入(10 , 9)函数返回1,传入(12 ,, 4)函数返回4*///更相减损法int fuc(int m,int n){int i=0,temp,x;while(m%2==0 && n%2==0) //判断m和n能被多少个2整除{m/=2;n/=2;i+=1;}if(m<n)//m保存大的值{temp=m;m=n;n=temp;}while(x){x=m-n;m=(n>x)?n:x;n=(n<x)?n:x;if(n==(m-n))break;}if(i==0)return n;else return (int )pow(2,i)*n;}//辗转相除法int fuc2(int m,int n ){int temp;if(m<n){temp=m;m=n;n=temp;}while(n!=0) //相除{temp=m%n;m=n;n=temp;}return m;}int main(){int m,n;scanf("%d%d",&m,&n);printf("fuc:%d\n",fuc(m,n));printf("fuc2:%d\n",fuc2(m,n));return 0;}

纵然伤心,也不要愁眉不展,因为你不知是谁会爱上你的笑容

【C语言】最大公约数(更相减损法)和(辗转相除法)

相关文章:

你感兴趣的文章:

标签云: