求两个数的最大公约数的c语言程序 例如求111222333444和45678的最大公约数,答案是138

来源:百度知道 编辑:UC知道 时间:2024/06/14 04:12:56
注意,最大的数为十五位的整数,长整型都不够存放

#include <stdio.h>
__int64 lcd(__int64 a,__int64 b)
{
if(a%b==0)
return b;
else return lcd(b,a%b);
}
void main()
{
__int64 a,b;
scanf("%I64d%I64d",&a,&b);
if(a>b)
printf("%I64d",lcd(a,b));
else
printf("%I64d",lcd(b,a));
}

#include <stdio.h>

_int64 hcf(_int64 a,_int64 b)
{
_int64 r=0;
while(b!=0)
{
r=a%b;
a=b;
b=r;
}
return(a);
}

_int64 lcd(_int64 u,_int64 v,_int64 h)
{
return(u*v/h);
}

main()
{
_int64 u,v,h,l;
u=111222333444;
v=45678;
//scanf("%d%d",&u,&v);
h=hcf(u,v);
printf("H.C.F=%I64u\n",h);
l=lcd(u,v,h);
printf("L.C.D=%I64u\n",l);
}