请编写函数fun,它的功能是:求任意两个正整数的最小公倍数和最大公约数,最小公倍数放在指针变量bei所指的变量中,最大公约数放在指针变量yue所指的变量中。
注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
void fun(int m,int n,int*bei,int *yue)
int s=l,i;
if(m>n)s=m;m=n;n=S;
for(i=2,s=1;i<m i++)
if((m%i=0)&&(n%i=0))
*yue=s;
*bei=S*m*n;
main( )
int a,b,beishu,yueshu;
chscr( );
printf("please input a,b:");scanf("%d,%d,"&a,&b);
fun(a,b,&beishu,&yueshu);
printf("a,b beishu:%d\n",beishu);
printf("a,b yueshu:%d\n",Yueshu);
参考答案:
void fun(int m,int n,int*bei,int*yue)
{int s=l,i;
if(m>n){s=m;m=n;n=s;}
for(i=B,s=A;i<m;i++)
if((m%i==0)&&(n%i==0))
{m=m/i; n=n/i;
s=s*i: i=A:
}
*yue=s;*bei=s*m*n;
}
解析:
本题考查编程解决一般数学问题的能力。本题函数fun的实现了拐除法,在2~ m之间从小到大依次取数i同时整除m和n,若能整除,则累乘到s中,最后的s就是最大公约数,s*m*n就是最小公倍数。