c语言两个数的最大公约数

c语言最大公约数 c语言求两个数的最大公约数是多少

代码如下:

#include

int main()

{

int i,a,b,t;

scanf(%d%d,a,b);//输入数a,b

if(ab)//比较a,b大小,如果ab则交换,结果为ab p=”” /b

{

t=a;

a=b;

b=t;

}

for (i = a; i = 2; i–)//以较小的a为基数,每内次i减小1循环求最大公容约数

{

if (a % i == 0 b % i == 0)//如果两数均能整除某数则该数为最大公约数

{

printf(最大公约数是:%d\n,i);

break;//已得到最大公约数后跳出循环

}

}

if(i==1)//若循环到最后仍无最大公约数则i=1

printf(两数只能同时被1整除!\n);

return 0;

}

c语言两个数的最大公约数

如何用C语言求两个数的最大公约数的三种算法

1、相减法

#includelt;stdio.hgt;

int main()

{

int a,b;

int c=0;//计数器

while(1)//循环判断的作用

{

printf(“输入两个数字求最大公约数:”);

scanf(“%d%d”,a,b);

while(a!=b)

{

if(agt;b)

a=a-b;

else

b=b-a;

c++;

}

printf(“最大公约数是:%d\n”,a);

printf(“%d\n”,c);

}

return 0;

}

运行效果:

2、辗转相除法:

#includelt;stdio.hgt;

int a,b,temp;

int Division(){

printf(“请输入两个数(a,b):\n”);

scanf(“%d,%d”,a,b);

if(alt;b){

temp=a;

a=b;

b=temp;

}

while(a%b!=0){

temp=a%b;

a=b;

b=temp;

}

printf(“最大公约数为:%d\n”,b);

return 0;

}

3、穷举法

#includelt;stdio.hgt;

int main()

{

int a,b,c;

int d=0;//计数器

while(1)

{

printf(“输入两个数字求最大公约数:”);

scanf(“%d%d”,a,b);

c=(agt;b)?b:a;//三目运算符

while(a%c!=0||b%c!=0)

{

c–;

d++;

}

printf(“最大公约数是:%d\n”,c);

printf(“%d\n”,d);

}

return 0;

}

c语言求两个数的最大公约数

#includestdio.h

void

main()

{

int

a,b,j=0,i,f=0,h=0;

int

u[2];

int

x[100];

int

y[100];

int

z[100];

for(i=0;i=1;i++)

//把输入的两个数放进数组u[i]

{

scanf(“%d”,u[i]);

}

for(a=1;a=u[0];a++)

//求输入的第一个数即u[0]的所有约数,把约数全部放进x[j]

{

for(b=1;b=u[0];b++)

{

if(a*b==u[0])

{

x[j]=a;

j++;

}

}

}

for(a=1;a=u[1];a++)//求输入的第二个数即u[1]的所有约数,把约数全部放进一y[f]

{

for(b=1;b=u[1];b++)

{

if(a*b==u[1])

{

y[f]=a;

f++;

}

}

}

for(a=0;aj;a++)//找出x[]与y[]中相同的元素,把相同元素放进z[h]

{

for(b=0;bf;b++)

{

if(x[a]==y[b])

{

z[h]=x[b];

h++;

}

}

}

printf(“%d

“,z[h-1]);

}

我给你稍做了修改。

你的小错误:

1.“void

mian()”是main()

2.你赋值经常赋反,必须是未知=已知。“b=x[j];e=y[f];”

3.在访问数组的时候,数组里面没有数你也访问了,这样会出错,也会浪费时间和资源。如“

for(j=0;j=100;j++)”这里面x[]后面有很多是没有赋值的。

4.“for(h=0;h=100;h++)/*在z[h]中各元素相比较,找出最大的元素即最大公约数*/”z[h]已经是由小到大的顺序了,只需要输出最后的那个。

5.尽量减少未知变量。

这个求最大公约数还有个简单的算法。你可以去百度查查。

希望我的回答对你有帮助。

c语言求最大公约数

最大公约数c语言编程的常用思路是:按照从大(两个整数中较小的数)到小(到最小的整数1)的顺序求出第一个能同时整除两个整数的自然数,即为所求。

两个数的最大公约数有可能是其中的小数,所以在按从大到小顺序找寻最大公约数时,循环变量i的初值从小数n开始依次递减,去寻找第一个能同时整除两整数的自然数,并将其输出。

需要注意的是,虽然判定条件是i0,但在找到第一个满足条件的i值后,循环没必要继续下去,如,25和15,最大公约数是5,对于后面的4、3、2、1没必要再去执行,但此时判定条件仍然成立,要结束循环只能借助break语句。

具体代码实现:

#includestdio.h

int main()

{

int m,n,temp,i;

printf(“Input mn:”);

scanf(“%d%d”,m,n);

if(mn)/*比较大小,使得m中存储大数,n中存储小数*/

{/*交换m和n的值*/

temp=m;

m=n;

n=temp;

}

for(i=n;i0;i–)/*按照从大到小的顺序寻找满足条件的自然数*/

if(m%i==0n%i==0)

{/*输出满足条件的自然数并结束循环*/

printf(“The GCD of%d and%d is:%d\n”,m,n,i);

break;

}

return 0;

}

c语言程序编写:计算两个数的最大公约数

#includestdio.h

#include conio.h

void main()

{

int m,n,k;

while (1)

{

printf(“输入m和n(mn):”);

scanf(“%d %d”,m,n);

if(mn)

printf(“输入错误,请重新输入\n”);

else break;

}

while (1)

{

k=m%n;

if(k==0)

break;

m=n;

n=k;

}

printf(“m和n的最大公约数是:%d”,n);

getch();

}

C语言:求两数的最大公约数

我的方法,很笨。请勿见笑

// 函数 GetCommonDivisor: 求两个数的最大公约数

int GetCommonDivisor( int x , int y )

{

// 取x,y的小者作为运算的起始点,逐渐减小,直到x,y都能整除为止

int Max = min( x,y );

while( Max = 1 )

{

if( ( x % Max == 0 ) ( y % Max == 0 ) )

// 找到最大公约数返回

return Max;

Max –;

}

return 1;

}

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月28日 04:27:47
下一篇 2024年3月28日 04:35:01

相关推荐

  • c语言改写模式,c语言实现修改功能

    c语言程序修改? 1、这个程序有4个错误,我都加粗了,第一个是m没有赋初值,第二个是while表达式中的ch=getchar()需要括号括起来,第三个是m=m*10+ch-0中的0也需要用单引号括起来,第四个是第2个while中为m!=0。 2、define容易造成误会,因为不符合一般的编程习惯,false 0, true 1;scanf放在你的那个地方是达…

    2024年5月23日
    3900
  • c语言控制代码的换码序列,c语言交换代码

    求C语言编程大神解答一下下面这个编程代码? k==5,用5去除125余0,所以r=125%5中r为0。由于!0为1,所以执行while循环体:先打印出5(k的值),再n=n/k==125/5=25;由于251则再打印出*号。这一循环结果输出是5*。 下面是我的代码,三个函数分别对应三个问题。 在实现基本要求的前提下,拓展了可以从键盘输入的功能,以下为各题代码…

    2024年5月23日
    5600
  • c语言扫描io脚状态,c语言端口扫描

    求51单片机的上升沿和下降沿C语言检测程序列子,端口就是普通IO口。 上升沿触发是当信号有上升沿时的开关动作,当电位由低变高而触发输出变化的就叫上升沿触发。也就是当测到的信号电位是从低到高也就是上升时就触发,叫做上升沿触发。 单片机怎么计算1s内下降沿的个数的C语言程序或者计算两个下降沿的时间(检测脉冲频率)计算1s内下降沿的个数方法是,一个定时器设置定时1…

    2024年5月23日
    4400
  • c语言mallloc使用的简单介绍

    C语言中使用malloc必须加#includemallo.h? 1、在C语言中使用malloc函数进行动态内存分配。malloc的全称是memory allocation,中文叫动态内存分配。原型:extern void malloc(unsigned int num_bytes);功能:分配长度为num_bytes字节的内存块。 2、你可以看一下C语言那本…

    2024年5月23日
    4400
  • c语言三位小数,C语言三位小数

    怎样用C++语言输出精确到小数点后三位的数? 1、用C++语言输出精确到小数点后三位的数,可以参考下面给出的代码:coutsetiosflags(ios:fixed)setprecision(3)。其中 setiosflags中set是设置的意思。ios是iostream的缩写,即输入输出流。flags是标志的意思。 2、要精确到小数点后若干位,则数据类型为…

    2024年5月23日
    7300
  • c语言21点游戏,二十一点游戏代码c语言

    如何使用C语言编写简单小游戏? 1、数学知识:长方形的面积S=a*b 长方形周长L=2*(a+b)其中a b分别为长方形的宽和高。算法分析:长方形面积及周长均依赖于宽和高,所以先要输入宽高值,然后根据公式计算,输出结果即可。 2、/*也不知道你是什么级别的,我是一个新手,刚接触编程语言,以下是我自己变得一个小程序,在所有c语言的编译器(vc++0、turbo…

    2024年5月23日
    6400
  • c语言当中的null,C语言当中的符号

    C/C++中,NULL和null的区别是什么? nul 和 null要看编译器,不同的编译器有所区别。 所以C或者C++中都使用一个特殊定义NULL表示无效值,其本质就是未定义具体数据类型的0值。 null是是什么都没有的意思。在java中表示空对象。 本意是“空的;元素只有零的”意思。计算机中通常表示空值,无结果,或是空集合。\x0d\x0a在ASCII码…

    2024年5月23日
    4500
  • 包含c语言对txt文件命名的词条

    如何在C语言编程里面修改源文件名字 如果你是在WINDOWS的话,简单了,随便用个编辑器,比如记事本,然后写c源程序,保存到你想要保存的位置。如果你在DOS下,可以用edit,写好以后,按alt键,选择文件菜单,然后保存。 用open打开文件,注意操作模式使用“修改”或者“添加” 用write或者fprintf向文件中写入你的内容。 用close关闭文件。 …

    2024年5月23日
    4900
  • 学c语言编程,学c语言编程用什么软件

    编程开发必须要学C语言吗? 1、要学习。编程开发的学习内容主要包括c语言、python和c+语言。C语言作为一种简单灵活的高级编程语言,它是一个面向过程的语言,一般是作为计算机专业的基础入门语言课程。 2、C语言。对于刚接触编程的人来说,先学习C语言是非常重要的。C语言可以说是是计算机编程语言的鼻祖,其他的编程语言几乎全是由C语言变化衍生出来的。 3、不需要…

    2024年5月23日
    3500
  • c语言用string定义字符串,c语言中用string类型来处理字符串类型

    C++怎样定义定义字符串 1、第一是字符数组来表示字符串。用下面的语句声明:char a[10];C语言中字符数组与字符串的唯一区别是字符串末尾有一个结束符\0,而字符数组不需要。 2、在C中定义字符串有下列几种形式:字符串常量,char数组,char指针 字符串常量 即:位于一对双括号中的任何字符。双引号里的字符加上编译器自动提供的结束标志\0字符,作为 …

    2024年5月23日
    4300

发表回复

登录后才能评论



关注微信