以下程序求两个整数M,N的最大公约数:

题目
以下程序求两个整数M,N的最大公约数:
SUBROUTINE ZDGUS(M,N)
K=_
DOIO J = 2,K
IF(MOD(N,J). EQ. 0. AND. MOD(M,J). EQ. 0)L=J 10 CONTINUE
WRITEC*,‘(2X,15),)L
RETURN
END
为了使程序完整,在_处应填入的是:

A.M
B.N
C. MIN(M,N)
D. M/N
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

请编写函数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 mint nint*beiint*yue) {int s=li; if(m>n){s=m;m=n;n=s;} for(i=2s=1;im;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;im;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就是最小公倍数。

第2题:

下面程序的功能是求整数m、n的最大公约数,请填空。 main() {int m,n,r; scanf("%d,%d",&m,&

下面程序的功能是求整数m、n的最大公约数,请填空。

main()

{ int m,n,r;

scanf("%d,%d",&m,&n);

if(【 】){r=m;m=n;n=r;)

while(【 】)

{ r=m%n;m=n;n=r; }

printf("%d",m);

}


正确答案:mn或n>m r或r!=0
mn或n>m r或r!=0 解析:本题使用的是“辗转相除”法求两个数的最大公约数,即以两个数中较大的除以较小的,如果余数不为0,则将较小的数和余数做同样处理,直到被除断为止,此时较小的数就是两个数的最大公约数。本题第一空要求填写一个if语句的判断条件,如果满足此条件则交换m和n的值,再看后面while循环的循环体,使用m%n求余,则此if语句的作用应该是保证m是两个数中较大的那个,故第一空填mn或n>m。接下来的while循环实现整个辗转相除的过程,其结束条件应该是余数r为0,所以while的循环条件应该填r或r!=0。

第3题:

( 6 ) 下面程序的功能是从键盘输入 1 大于 100 的整数 m ,计算并输出满足不等式

1+22+32 +42 + …… .+n2<m

的最大的 n 。请填空

Private Sub Command1__Click ()

Dim s ,m,n AS Integer

m=Val ( InputBox ( “ 请输入一个大于 100 的整数 ” ))

n=_________

s=0

Do While s<m

n=n+1

s=s+n*n

Loop

Print “ 满足不等式的最大 n 是_____

End Sub


正确答案:

第4题:

下列给定程序中,函数fun的功能是:求两个非零正整数的最大公约数,并作为函数值返回。

例如,若nmnl和num2分别为49和21,则输出的最大公约数为7;若num1和num2分别为27和81,

则输也的最大公约数为27。

请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或硼行,也不得更改程序的结构!

试题程序:


正确答案:

第5题:

阅读以下说明和流程图,回答问题1-2,将解答填入对应的解答栏内。

[说明]

下面的流程图采用欧几里得算法,实现了计算两正整数最大公约数的功能。给定正整数m和 n,假定m大于等于n,算法的主要步骤为:

(1)以n除m并令r为所得的余数;

(2)若r等于0,算法结束;n即为所求;

(3)将n和r分别赋给m和n,返回步骤(1)。

[流程图]

[问题1] 将流程图中的(1)~(4)处补充完整。

[问题2] 若输入的m和n分别为27和21,则A中循环体被执行的次数是(5)。


正确答案:[问题1] (1) n>m或nm或其它等效形式 (2) m←t (3) n←r (4) m%n [问题2] (5) 1
[问题1] (1) n>m或nm或其它等效形式 (2) m←t (3) n←r (4) m%n [问题2] (5) 1 解析:(1)~(2)当n的值大于(等于)m时,应交换两者的值,再使用欧几里得算法;
(3)~(4)略;
(5)m,n和r在执行循环A前后的值分别为:

第6题:

下列程序在输入m后,求满足条件“n!<=m<=(n+1)!”的值n,请将程序补充完整。include using

下列程序在输入m后,求满足条件“n!<=m<=(n+1)!”的值n,请将程序补充完整。

include <iostream>

using namespace std;

int main()

{

int n,m, jc = 1;

cin>>m;

for(n=2;jc<=m;n++)

jc = jc*n;

cout<<"n="<<【 】<<end1;

return 0;

}


正确答案:(n-2)
(n-2) 解析:研究本题中包含的语句“jc=m;”和“jc=jc*n:”,可发现本题是通过求出“n!”的值jc并检查该值是否大于m;如果小于等于,继续循环求出“(n+1)!”直到jc>m。跳出循环后,得到n的值并输出。题中要填出n的输出值,但应注意:如果直接填n,是错误的。因为在循环语句中先求出jc=jc*n,如果这时的jc>m,循环还没结束,n的值就比要求的值大1,结束循环后,执行n++后,再判断jc=m,所以n的值比所求的大2,故应填入n-2。

第7题:

JAVA编程

题目:输入两个正整数m和n,求其最大公约数和最小公倍数。   

/**在循环中,只要除数不等于0,用较大数除以较小的数,将小的一个数作为下一轮循环的大数,取得的余数作为下一轮循环的较小的数,如此循环直到较小的数的值为0,返回较大的数,此数即为最大公约数,最小公倍数为两数之积除以最大公约数。* /


import java.util.*;
public    class    lianxi06     {
public static void main(String[] args) {
int     a ,b,m;
Scanner s = new Scanner(System.in);
System.out.print( "
键入一个整数:
");
a = s.nextInt();
System.out.print( "
再键入一个整数:
");
b = s.nextInt();
      deff cd = new deff();
      m = cd.deff(a,b);
      int n = a * b / m;
      System.out.println("
最大公约数
: " + m);
      System.out.println("
最小公倍数
: " + n);
}
}
class deff{
public int deff(int x, int y) {
     int t;
     if(x < y) {
      t = x;
      x = y;
      y = t;
     }  
     while(y != 0) {
      if(x == y) return x;
      else {
       int k = x % y;
       x = y;
       y = k;
      }
     }
     return x;
}

第8题:

有如下事件过程,程序的功能是()。 Private Sub Commandl _Click ( ) S1=0: S2=0 M1=0: M2=0 N=1 Do while N<=100 A=INT(101* RND) If a mod 2=0 THEN S1= S1+A : M1=M1+1 Else S2= S2+A : M2=M2+1 End if N=N+1 Loop Print S1,S2 Print M1,M2 END Sub

:A. 求101以内奇数之和

B. 求101以内偶数之和

C. 随机产生100个0-100之间的整数,并分别求这些数的奇数和与偶数的个数与和

D. 随机产生101个0-100之间的整数,并分别求这些数的奇数和与偶数的个数与和


参考答案:C

第9题:

请补充main函数,该函数的功能是:输入两个正整数m和n,求这两个数的最大公约和最小公倍数。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在 main函数的横线上填入所编写的若干表达式或语句。

试题程序:

include <stdio.h>

main ( )

{

int a, b, n, m, t;

clrscr ();

printf ("\nInput two numbers: \n");

scanf ("%d, %d", &n, &m);

if (n<m)

{

a=m;

b=n;

}

else

{

a=n;

b=m;

}

while(【 】)

{

t=【 】

a=b;

b=t;

}

printf ("greatest con. non divisor:

%d\n", a);

printf ("least common multiple:

%d\n",【 】);

}


正确答案:b!=0 a%b; n*m/a
b!=0 a%b; n*m/a 解析:第一空:本题考查求最大公约数和最小公倍数的方法。变量a保存两数中较大着,变量b保存较小者,采用循环的方法求解最大公约数,循环结束条件是b等于0。第二空:求解最大公约数的思路是,将a对b求余,如果余数为0, 则b即为两数的最大公约数,如果余数不为0,则将b赋给a,余数赋给b,继续将a对b求余,如此循环,直到余数为0。第三空:最小公倍数等于两数的乘积除以最大公倍数。

第10题:

以下程序是用来计算两个非负数之间的最大公约数我们假设x,y中最大的那个数的长度为n,基本运算时间复杂度为O(1),那么该程序的时间复杂度为()

A.O(1)

B.O(logn)

C.O(n)

D.O(n^2)


正确答案:C