辗转相除法c语言子函数 c语言辗转相除法递归

c语言编程:输入两个正整数,求最大公约数和最小公倍数

#includelt;stdio.hgt;

创新互联公司总部坐落于成都市区,致力网站建设服务有成都网站设计、成都做网站、网络营销策划、网页设计、网站维护、公众号搭建、微信小程序定制开发、软件开发等为企业提供一整套的信息化建设解决方案。创造真正意义上的网站建设,为互联网品牌在互动行销领域创造价值而不懈努力!

int main()

{

int p,r,n,m,temp;

printf("请输入两个正整数n,m:");

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

if(nlt;m)

{

temp=n;

n=m;

m=temp;

}

p=n*m;

while(m!=0)

{

r=n%m;

n=m;

m=r;

}

printf("它们的最大公约数为:%d\n",n);

printf("它们的最小公约数为:%d\n",p/n);

return 0;

}

方法二、//穷举法解两个数的最大公约数和最小公倍数

void exp(int num1,int num2){

int x,y,i;

x=num1;

y=num2;

int max=0;//最大公约数

for(i=1;ilt;=num1;i++)

if(num1%i==0num2%i==0)

max=i;

System.out.println("---------------------------------");

System.out.println("利用穷举法计算所得最大公约数为:"+max);

System.out.println("利用穷举法计算所得最小公倍数为:"+x*y/max);//最小公倍数

System.out.println("---------------------------------");

}

扩展资料:

include用法:

#include命令预处理命令的一种,预处理命令可以将别的源代码内容插入到所指定的位置;可以标识出只有在特定条件下才会被编译的某一段程序代码;可以定义类似标识符功能的宏,在编译时,预处理器会用别的文本取代该宏。

插入头文件的内容

#include命令告诉预处理器将指定头文件的内容插入到预处理器命令的相应位置。有两种方式可以指定插入头文件:

1、#includelt;文件名gt;

2、#include"文件名"

如果需要包含标准库头文件或者实现版本所提供的头文件,应该使用第一种格式。如下例所示:

#includelt;math.hgt;//一些数学函数的原型,以及相关的类型和宏

如果需要包含针对程序所开发的源文件,则应该使用第二种格式。

采用#include命令所插入的文件,通常文件扩展名是.h,文件包括函数原型、宏定义和类型定义。只要使用#include命令,这些定义就可被任何源文件使用。如下例所示:

#include"myproject.h"//用在当前项目中的函数原型、类型定义和宏

你可以在#include命令中使用宏。如果使用宏,该宏的取代结果必须确保生成正确的#include命令。

C语言程序 设计:用辗转相除法求两个正整数的最大公约数

main()

{

int a,b,num1,num2,temp;

printf("please input two numbers:\n");

scanf("%d,%d",num1,num2);

if(num1num2)/*交换两个数,使大数放在num1上*/

{ temp=num1;

num1=num2;

num2=temp;

}

a=num1;b=num2;

while(b!=0)/*利用辗除法,直到b为0为止*/

{

temp=a%b;

a=b;

b=temp;

}

printf("gongyueshu:%d\n",a);

printf("gongbeishu:%d\n",num1*num2/a);

}

c语言函数。

程序设计中的函数

许多程序设计语言中,可以将一段经常需要使用的代码封装起来,在需要使用时可以直接调用,这就是程序中的函数。比如在C语言中:

int max(int x,int y)

{

return(xy?x:y;);

}

就是一段比较两数大小的函数,函数有参数与返回值。C++程序设计中的函数可以分为两类:带参数的函数和不带参数的函数。这两种参数的声明、定义也不一样。

带有(一个)参数的函数的声明:

类型名标示符+函数名+(类型标示符+参数)

{

}

不带参数的函数的声明:

void+函数名()

{

}

花括号内为函数体。

带参数的函数有返回值,不带参数的没有返回值。

C++中函数的调用:函数必须声明后才可以被调用。调用格式为:函数名(实参)

调用时函数名后的小括号中的实参必须和声明函数时的函数括号中的形参个数相同。

有返回值的函数可以进行计算,也可以做为右值进行赋值。

#include

using namespace std;

int f1(int x, inty)

{int z;

return x+y;

}

void main()

{coutf1(50,660)endl

}

C语言中的部分函数

main(主函数)

max(求最大数的函数)

scanf(输入函数)

printf(输出函数)

通俗的来理解说就是:在程序中需要c语言函数进行简易化操作,有了函数大大减少了庞大程序中的错误和不清楚问题,例如:我要把加好的数放到函数中去打印,这样就可用一两句c语言语句来编写,否则会相当麻烦要写上许多条语句

C语言问题

辗转相除法

辗转相除法, 又名欧几里德算法(Euclidean algorithm)乃求两个正整数之最大公因子的算法。它是已知最古老的算法, 其可追溯至前300年。它首次出现于欧几里德的《几何原本》(第VII卷,命题i和ii)中,而在中国则可以追溯至东汉出现的《九章算术》。它并不需要把二数作质因子分解。

辗转相除法是利用以下性质来确定两个正整数 a 和 b 的最大公因子的:

1. 若 r 是 a ÷ b 的余数, 则

gcd(a,b) = gcd(b,r)

2. a 和其倍数之最大公因子为 a。

另一种写法是:

1. a ÷ b,令r为所得余数(0≤r<b)

若 r = 0,算法结束;b 即为答案。

2. 互换:置 a←b,b←r,并返回第一步。

[编辑] 虚拟码

这个算法可以用递归写成如下:

function gcd(a, b) {

if (a 不整除 b)

return gcd(b, a mod b);

else

return a;

}

或纯使用循环:

function gcd(a, b) {

define r as integer;

while b ≠ 0 {

r := a mod b;

a := b;

b := r;

}

return a;

}

其中“a mod b”是指取 a ÷ b 的余数。

例如,123456 和 7890 的最大公因子是 6, 这可由下列步骤看出:

a---------------b--------------a mod b

123456----------7890-----------5106

7890------------5106-----------2784

5106------------2784-----------2322

2784------------2322-----------462

2322------------462------------12

462-------------12-------------6

12--------------6--------------0

只要可计算余数都可用辗转相除法来求最大公因子。这包括多项式、复整数及所有欧几里德定义域(Euclidean domain)。

辗转相除法的运算速度为 O(n2),其中 n 为输入数值的位数。


网站栏目:辗转相除法c语言子函数 c语言辗转相除法递归
网站链接:http://hbruida.cn/article/dohpghi.html