请编写函数fun 它的功能是:求任意两个正整数的最小公倍数和最大公约数 最小公倍数放在指针变量be
请编写函数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 ",beishu);
printf("a,b yueshu:%d ",Yueshu);
}
请帮忙给出正确答案和分析,谢谢!
-
正确答案:void fun(int mint nint*beiint*yue) {int s=li; if(m>n){s=m;m=n;n=s;} for(i=2s=1;i<m;i++) if((m%i==0)&&(n%i==0)) {m=m/i; n=n/i; S=s*i: i=1: } *yue=s;*bei=s*m*n; }
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)) {m=m/i; n=n/i; S=s*i: i=1: } *yue=s;*bei=s*m*n; } 解析:本题考查编程解决一般数学问题的能力。本题函数fun的实现了拐除法,在2~ m之间从小到大依次取数i同时整除m和n,若能整除,则累乘到s中,最后的s就是最大公约数,s*m*n就是最小公倍数。
