定义c语言最大公约数函数 函数最大公约数值c语言

C语言中求最大公约数的函数#include
"stdio.h"
int
main()
{
int
d1,d2,r;
printf("输入两个正整数:");
scanf("%d
%d",d1,d2);
do
{
r=d1%d2;
d1=d2;d2=r;
}while(d2!=0);
printf("最大公约数是:%d",d1);
}
//递归法
#include
"stdio.h"
int
fun(int
d1,int
d2)
{
if(d2!=0)
return
fun(d2,d1%d2);
else
return
d1;
}
int
main()
{
int
d1,d2;
printf("输入两个正整数:");
scanf("%d
%d",d1,d2);
printf("最大公约数是:%d",fun(d1,d2));
}
C语言函数编写,求两个整数的最大公约数和最小公倍数编写该程序的整体思路:分别定义最大公约数函数和最小公倍数函数,然后再main函数里面调用它 。C语言实现代码如下:
#includestdio.h
#includemath.h
int fun_gy(int,int);//声明最大公约数函数
int fun_gb(int,int);//声明最小公倍数函数
main()
{
int a,b,gy,gb;
printf("输入两个整数:\n");
scanf("%d%d",a,b);
gy=fun_gy(a,b);//调用最大公约数函数
gb=fun_gb(a,b);//调用最小公倍数函数
printf("最大公约数是:%d\n最小公倍数是:%d\n",gy,gb);
}
int fun_gy(int x,int y)
{
int z,i;
if(xy)
z=sqrt(y);
else
z=sqrt(x);
for(i=z;i=1;i--)
{
if(x%i==0y%i==0)
break;
}
return i;
}
int fun_gb(int x,int y)
{
int z,i;
z=x*y;
for(i=x;i=z;i++)
{
if(i%x==0i%y==0)
break;
}
return i;
}
程序运行结果:
扩展资料:
这里涉及到了最大公约数和最小公倍数的计算方法:
我们知道两个整数的最小公倍数等于他们的乘积除以他们的最大公约数 。所以关键还是最大公约数的计算 。
辗转相除法(求最大公约数):
假设求a,b的最大公约数,则:
(1)a除以b取余得c,若c=0 , 则b即为两数的最大公约数,输出 , 结束 。
(2)若c!= 0,则将b赋给a,c赋给b再返回上一步操作,继续执行 。
例如,求30和98的最大公约数 , 过程如下:
90%30 = 8;
30%8 = 6;
8%6 = 2;
6%2 = 0;
所以最大公约数为2 。
c语言中利用自定义函数,求出两个数的最大公约数#include stdio.h
int fun(int m,int n)
{
int t;
while(n) {t=m%n;m=n;n=t;}
return m;
}
void main()
{
int m,n;
scanf("%d%d",m,n);
printf("最大公约数: %d",fun(m,n));
}
C语言 用自定义函数 , 实现求两个数的最大公约数#include stdio.h
void swap (int *p_a,int *p_b){ //make a always =b
int temp;
temp =*p_b;
*p_b = *p_a;
*p_a = temp;
}
int G_D(int a, int b){ //define the function for Greatest Divisor
int i, G_Dvalue;
for (i=b;i0;i--){
if ((a%i==0)(b%i==0)){
//printf("This is the %dth run\n", i);
G_Dvalue =https://www.04ip.com/post/i;
break;
}
}
return G_Dvalue;
}
int L_M(int a, int b){ //define the function for least multiple
int i, L_Mvalue;
for (i =b; i a*b+1; i++){
if (i%a==0i%b==0){
L_Mvalue =https://www.04ip.com/post/i;
break;
}
}
return L_Mvalue;
}
int main()
{
int m, n; //input 2 int
int Greatest_D, Least_M; //define greatest divisor AND least multiple
printf ("Pls input 2 integter:\n");
scanf ("%d", m);
scanf ("%d", n);
//printf ("m is %d, n is %d\n", m,n);
if (mn){
swap (m, n);
}
//printf ("m is %d, n is %d\n", m,n);

推荐阅读