『壹』 C语言程序:用“辗转相除法”求两个正整数的最大公约数(程序填空)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a, b,r;
scanf("%d %d", &a, &b);
while (b != 0)//当其中一个数为0,另一个数就是两数的最大公约数
{
r = a%b;
a = b;
b = r;
}
printf("最大公约数%d ", a);
system("pause");
}
例子:内
105252
252%105=容42;
105%42=21;
42%21=0;
即21为105与252的最大公约数
while语句若一直满足条件,则会不断的重复下去。但有时,需要停止循环,则可以用下面的三种方式:
一、在while语句中设定条件语句,条件不满足,则循环自动停止。
如:只输出3的倍数的循环;可以设置范围为:0到20。
二、在循环结构中加入流程控制语句,可以使用户退出循环。
1、break流程控制:强制中断该运行区内的语句,跳出该运行区,继续运行区域外的语句。
2、continue流程控制:也是中断循环内的运行操作,并且从头开始运行。
『贰』 C语言程序设计:用辗转相除法求两个整数的最大公约数。
#include<stdio.h>
intgcd(intn,intm)
{
/**********Program**********/
intt;
if(m>n)
{
t=m;m=n;n=t;
}
t=n%m;
while(t)
{
n=m;
m=t;
t=n%m;
}
returnm;
/**********End**********/
}
『叁』 什么是辗转相除法怎样用c语言编程实现,用辗转相除法
用辗转相除法(即欧几里得算法)求两个正整数的最大公约数.
解析:
设两个数,n,假设m>=n,用m除以n,求得余数q.若q为0,则m为最大公约数;若q不等于0,则进行如下迭代:
m=n,n=q,即原除数变为新的被除数,原余数变为新的除数重复算法,直到余数为0为止.余数为0时的除数n,即为原始m、n的最大公约数.
迭代初值:m,n的原始值;
q=m%n;
m=n;
n=q;
迭代条件:q!=0
例如:m=8;n=6
q=m%n(8%6==2)
m=n(m==6)
n=q(n==2)
因为:(q==2)!=0,重复算法:
q=m%n(6%2==0)
m=n(m==2)余数为0时的除数n为最大公约数,n值赋给了m,所以输出m的值
n=q(n==0)
因为:q==0 所以最大公约数为m的值
源程序:
#include
void main()
{
int m,n,q,a,b;
printf("Enter two integers:");
scanf("%d%d",&a,&b);
m=a;
n=b;
if(n>m)
{
int z;
z=m;m=n;n=z;//执行算法前保证m的值比n的值大
}
do
{
q=m%n;
m=n;
n=q;
}while(q!=0);
printf("The greatest common divisor of");
printf("%d,%d is %d\n",a,b,m);
}
希望对你有所帮助!
『肆』 C语言程序填空:用辗转相除法求两个整数的最大公约数、最小公倍数。
其实这个用递归写最方便~
while(n){
m = n;
n = r;
r = m%n;
}
printf("The min Gbshu=%d\n", m*r );
『伍』 vb编程实现用辗转相除法求两个数a和b的最大公约数
辗转相除法求两个数a和b的最大公约程序如下:
程式解析如下:
设两数为a、b(b<a),用gcd(a,b)表示a,b的最大公约数,r=a mod b 为a除以b以后的余数,辗转相除法即是要证明gcd(a,b)=gcd(b,r)。
第一步:令c=gcd(a,b),则设a=mc,b=nc
第二步:根据前提可知r =a-kb=mc-knc=(m-kn)c
第三步:根据第二步结果可知c也是r的因数
第四步:可以断定m-kn与n互素【否则,可设m-kn=xd,n=yd,(d>1),则m=kn+xd=kyd+xd=(ky+x)d,则a=mc=(ky+x)dc,b=nc=ycd,故a与b最大公约数成为cd,而非c】
从而可知gcd(b,r)=c,继而gcd(a,b)=gcd(b,r)。
证毕。
VB语言特点
结构化的程序设计语言:Visual Basic 6.0具有丰富的数据类型和众多的内部函数。其采用模块化和结构化程序设计语言,结构清晰,语法简单,容易学习。
强大的数据库功能:Visual Basic 6.0利用数据控件可以访问Access、FoxPro等多种数据库系统,也可以访问Excel、Lotus等多种电子表格。
ActiveX技术:ActiveX发展了原有的OLE技术,使开发人员摆脱了特定语言的束缚,方便地使用其他应用程序提供的功能,使Visual Basic 6.0能够开发集声音、图像、动画、字处理、电子表格、Web等对象于一体的应用程序。
网络功能:Visual Basic 6.0提供的DHTML(动态HTML)设计工具可以使开发者动态地创建和编辑Web页面,使用户能开发出多功能的网络应用软件。
『陆』 C语言辗转相除法
# include <stdio.h>
void simplify( const int *p1,const int *p2);
void main()
{
int a,b;
scanf ("%d/%d",&a,&b);
simplify(&a,&b);
}
void simplify( const int *p1,const int *p2)
{
int max = (*p1>*p2)?*p1:*p2; //确定最抄大数用来做辗袭转相除法的分子
int min = (*p1>*p2)?*p2:*p1; //确定最小数用来做辗转相除法的分母
int n = max%min; //n是用来判断余数是否为0
while(n) //如果不为0,则进行下面的程序
{
max = min;
min = n;
n = max%min; //当余数 n=0时,min就是两个数的最大公因数
}
int x = *p1/min;
int y = *p2/min;
printf ("%d/%d",x,y);
}
『柒』 编程一个C语言程序,输入两个数,采用辗转相除法来计算最大公约数
可以参考下面的代码:
#include <stdio.h>
int main()
{
int m, n, r;
scanf ("%d%d", &m, &n);
if (m>n){r=m, m=n, n=r;}
r=n%m;
while (r!=0){
n = m;
m = r;
r = n%m;
}
printf ("%d ", m);
return 0;
}
(7)本程序用辗转相除法扩展阅读:
函数 scanf() 是从标准输入流stdin(标准输入设备,一般指向键专盘)中读内容属的通用子程序,可以说明的格式读入多个字符,并保存在对应地址的变量中。
函数的第一个参数是格式字符串,它指定了输入的格式,并按照格式说明符解析输入对应位置的信息并存储于可变参数列表中对应的指针所指位置。每一个指针要求非空,并且与字符串中的格式符一一顺次对应。