c语言求最大公约数
㈠ c语言求最大公约数
这个叫做辗转相除法,是中国古代标准的求最大公约数的方法。两个数正整数a〉b,如果a%b(a除b的余数)=0,b就是最大公约数;否则比较b与a÷b的余数c=a%b,两者相除,余数为0,c是最大公约数;否则继续比较c与b%c(余数),……,反复交换进行,直到余数为0
㈡ C语言求最大公约数的代码
你的代码,主要的错误在for循环里的判断条件,应该是a%i!=0&&b%i!=0
不等号;但是,是了很久,发现这样的算法或者说思路也是错误的!因为你这样找到的只是两个数的最小公约数,而非最大公约数的,你可以用原来的想法,i
从
两个数中较小者那个从大到小去循环,从而找到两个数的公约数,也就是(从大到小)倒这来找公约数;或者建议你考虑辗转相除法,辗转相除法的思路是这样的:若
m和n为这连个正整数,有:当m>n,m与n
的最大公约数等于
n
与
m%n的最大公约数当n=0
,m与
n
的最大公约数等于
m,以下是算法,使用for语句:#include<stdio.h>
#include<windows.h>
int
main(){
int
a,b,m,n,r;
printf("输入两个正整数(请用逗号隔开):");
scanf("%d%d",&a,&b);
if(a>b)
{
m=a;
n=b;
}
else
{
m=b;
n=a;
}
for(r=b;r!=0;){
r=m%n;
m=n;
n=r;
}
printf("%d
和
%d
的最大公约数是:%d\n",a,b,m);
system("PAUSE");
return
0;
}
㈢ c语言如何求最大公约数和最小公倍数
#include <stdio.h>
int main()
{
int a,b,c,m,t;
printf("请输入两个数: ");
scanf("%d%d",&a,&b);
if(a<b)
{
t=a;
a=b;
b=t;
}
m=a*b;
c=a%b;
while(c!=0)
{
a=b;
b=c;
c=a%b;
}
printf("最大公约数是: %d ",b);
printf("最小公倍数是: %d ",m/b);
}
(3)c语言求最大公约数扩展阅读
算法思想
利用格式输入语句将输入的两个数分别赋给 a 和 b,然后判断 a 和 b 的关系,如果 a 小于 b,则利用中间变量 t 将其互换。
再利用辗转相除法求出最大公约数,进而求出最小公倍数。最后用格式输出语句将其输出。
#include<stdio.h>是在程序编译之前要处理的内容,称为编译预处理命令。编译预处理命令还有很多,它们都以“#”开头,并且不用分号结尾,所以是c语言的程序语句。
㈣ c语言计算两个数的最大公约数
#include <stdio.h>
int a,b,temp;
int Division(){
printf("请输入两个数(a,b):\n");
scanf("%d,%d",&a,&b);
if(a<b){
temp=a;
a=b;
b=temp;
}
while(a%b!=0){
temp=a%b;
a=b;
b=temp;
}
printf("最大公约数为:%d\n",b);
return 0;
}
㈤ C语言程序设计如何求最大公约数
具体操作步骤如下:
一、新建一个C语言源程序,使用Visual C++6.0的软件。
㈥ C语言求最大公约数
什么错误?我运行得没有问题啊?你把下面整个函数拷过去编译.
----------------------------------
int fac(int x,int y)
{
int n,t,z;
if(x<y)
{
t=x;
x=y;
y=t;
}
n=x%y; //先比大小再求mod
while(n!=0)
{
x=y;
y=n;
n=x%y; //这里不能少
}
z=y;
return(z);
}
㈦ 如何用C语言求两个数的最大公约数的三种算法
1、相减法
#include<stdio.h>
int main()
{
int a,b;
int c=0;//计数器
while(1)//循环判断的作用
{
printf("输入两个数字求最大公约数:");
scanf("%d%d",&a,&b);
while(a!=b)
{
if(a>b)
a=a-b;
else
b=b-a;
c++;
}
printf("最大公约数是:%d ",a);
printf("%d ",c);
}
return 0;
}
运行效果:
2、辗转相除法:
#include<stdio.h>
int a,b,temp;
int Division(){
printf("请输入两个数(a,b): ");
scanf("%d,%d",&a,&b);
if(a<b){
temp=a;
a=b;
b=temp;
}
while(a%b!=0){
temp=a%b;
a=b;
b=temp;
}
printf("最大公约数为:%d ",b);
return 0;
}
3、穷举法
#include<stdio.h>
int main()
{
int a,b,c;
int d=0;//计数器
while(1)
{
printf("输入两个数字求最大公约数:");
scanf("%d%d",&a,&b);
c=(a>b)?b:a;//三目运算符
while(a%c!=0||b%c!=0)
{
c--;
d++;
}
printf("最大公约数是:%d ",c);
printf("%d ",d);
}
return 0;
}
㈧ c语言编程求最大公约数和最小公倍数
#include<stdio.h>
int main()
{
int m,n;
int divisor,dividend,res;/*除数 被除数 余数*/
scanf("%d%d",&m,&n);
if(m>0&&n>0)
{
if(m>=n)
{
divisor=n;
dividend=m;
}
else
{
divisor=m;
dividend=n;
}
res=dividend%divisor;
while(res!=0)//循环体是三条语句,不加大括号循环只执行一条语句
{
dividend=divisor;
divisor=res;
res=dividend%divisor;
}
printf("%d",divisor);
}
else
printf("error!\n");
return 0;
}
两数相乘除以最大公约数就是最小公倍数
㈨ c语言求最大公约数
1、新建一个C语言源程序,这里使用Visual C++6.0的软件:
㈩ c语言求两个数的最大公约数
程序是正确的,只是算法上过于繁琐,i从1到a,所有的数都要循环一次。