导航:首页 > 源码编译 > 求最大公约数c语言算法

求最大公约数c语言算法

发布时间:2023-02-21 22:56:56

Ⅰ C语言程序设计如何求最大公约数

具体操作步骤如下:

一、新建一个C语言源程序,使用Visual C++6.0的软件。

Ⅱ 如何用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语言如何求最小公倍数和最大公约数

解题步骤:

1、求最大公约数

对两个正整数a,b如果能在区间[a,0]或[b,0]内能找到一个整数temp能同时被a和b所整除,则temp即为最大公约数。

2、求最小公倍数

对两个正整数a,b,如果若干个a之和或b之和能被b所整除或能被a所整除,则该和数即为所求的最小公倍数。

//穷举法求两数的最大公约数

int divisor(int a,int b)

{

int temp;//定义义整型变量

temp=(a>b)?b:a;//采种条件运算表达式求出两个数中的最小值

while(temp>0){

if(a%temp==0&&b%temp==0)//只要找到一个数能同时被a,b所整除,则中止循环

break;

temp--;//如不满足if条件则变量自减,直到能被a,b所整除

}

return temp;//返回满足条件的数到主调函数处

}

//穷举法求两数的最小公倍数

int multiple(int a,int b)

{

int p,q,temp;

p=(a>b)?a:b;//求两个数中的最大值

q=(a>b)?b:a;//求两个数中的最小值

temp=p;//最大值赋给p为变量自增作准备

while(1){//利用循环语句来求满足条件的数值

if(p%q==0)

break;//只要找到变量的和数能被a或b所整除,则中止循环

p+=temp;//如果条件不满足则变量自身相加

}

return p;

}

(3)求最大公约数c语言算法扩展阅读:

用穷举法解题时,就是按照某种方式列举问题答案的过程。针对问题的数据类型而言,常用的列举方法一有如下三种:

(1)顺序列举是指答案范围内的各种情况很容易与自然数对应甚至就是自然数,可以按自然数的变化顺序去列举。

(2)排列列举有时答案的数据形式是一组数的排列,列举出所有答案所在范围内的排列,为排列列举。

(3)组合列举当答案的数据形式为一些元素的组合时,往往需要用组合列举。组合是无序的。

例子如下:在公元五世纪我国数学家张丘建在其《算经》一书中提出了“百鸡问题”:

“鸡翁一值钱5,鸡母一值钱3,鸡雏三值钱1。百钱买百鸡,问鸡翁、母、雏各几何?”这个数学问题的数学方程可列出如下:

Cock+Hen+Chick=100

Cock*5+Hen*3+Chick/3=100

显然这是个不定方程,适用于穷举法求解。依次取Cock值域中的一个值,然后求其他两个数,满足条件就是解。

该问题的C语言程序算法如下:

int Cock,Hen,Chick;/*定义公鸡,母鸡,鸡雏三个变量*/

Cock=0;

while(Cock<=19)/*公鸡最多不可能大于19*/

{Hen=0;

whlie(Hen<=33)/*母鸡最多不可能大于33*/

{Chick=100-Cock-Hen;

if(Cock*15+Hen*9+Chick==300)/*为了方便,将数量放大三倍比较*/

printf(" 公鸡=%d 母鸡=%d 雏鸡=%d",Cock,Hen,Chick);

Hen=Hen+1;

}

Cock=Cock+1;

}

阅读全文

与求最大公约数c语言算法相关的资料

热点内容
傅氏算法和积分算法 浏览:176
安卓十怎么下降到安卓九 浏览:221
windows压缩tar 浏览:397
写作基础pdf 浏览:744
redis30php扩展 浏览:517
小米手机发布源码 浏览:611
程序员一般什么发音 浏览:280
阿里云java服务器 浏览:217
51单片机读取sd卡程序 浏览:821
初中学习单片机知识 浏览:357
安卓手机如何下苹果官网 浏览:37
linuxpython脚本运行 浏览:855
vs中编译在哪 浏览:454
linuxshell安装 浏览:761
qq邮箱发压缩包 浏览:196
做程序员需要跳槽吗 浏览:394
程序员进度考核 浏览:842
单片机编译picc 浏览:974
php获取当前url域名 浏览:338
丁字框架梁处用加密吗 浏览:682