请编写函数fun,它的功能是:求任意两个正整数的最小公倍数和最大公约数,最小公倍数放在指针变量bei所指的变量中,最大公约数放在指针变量yue所指的变量中。 注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其他函数中的任何内容,仅在函

admin2009-02-15  51

问题 请编写函数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=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就是最小公倍数。
转载请注明原文地址:https://kaotiyun.com/show/xTID777K
0

最新回复(0)