求一问题最大公约数和最小公倍数的定律
求最大公约数和最小公倍数的定律
#include<stdio.h> void main() { int gys(int,int); int gbs(int,int); int num1,num2,Gys,Gbs; //Gys是最大公约数,Gbs是最小公倍数。 printf("请你输入两个数:"); scanf("%d,%d",&num1,&num2); Gys=gys(num1,num2); Gbs=gbs(num1,num2); if(Gys==1) printf("没有最大公约数\n"); else printf("两个数的最大公约数是%d\n",Gys); printf("两个数的最小公倍数是%d\n",Gbs); } int gbs(int num1,int num2)//求两个数的最小公倍数。 { int gys(int,int); int Gbs,ys; ys=gys(num1,num2); Gbs=num1*num2/ys; return(Gbs); } int gys(int num1,int num2)//求两个数的最大公约数。 { int t,ys=1;//ys是余数,t是中间变量。 int i=2; if(num1<num2) { t=num1; num1=num2; num2=t; } if(num1%num2==0)return num2; else { while(1) { if((num1%i==0) && (num2%i == 0)) { ys*=i; num1=num1/i; num2=num2/i; } if(i==num2) return ys; i++; } } }