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

如题所述

#include<stdio.h>

int main()

{

int p,r,n,m,temp;

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

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

if(n<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;i<=num1;i++)

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

max=i;

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

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

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

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

}

扩展资料:

include用法:

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

插入头文件的内容

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

1、#include<文件名>

2、#include"文件名"

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

#include<math.h>//一些数学函数的原型,以及相关的类型和宏

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

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

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

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

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-08-13

1、新建一个工程和.c文件 ,输入头文件和主函数。

2、定义变量类型。

3、接下来需要输入a和b。

4、用一个if 语句去判断这两个数是否大于1。

5、用while 语句去求得最大公倍数和最小公约数。

6、输出最大公约数和最小公倍数。

7、编译,运行得到最后的结果。

本回答被网友采纳
第2个回答  2019-10-26

#include

voidmain(){

inta,b,n1,n2,t;

while(true)

{

printf("任意输入两个正整数:\n");

scanf("%d%d",&n1,&n2);

if(n1

{

t=n1;

n1=n2;

n2=t;

}

a=n1;

b=n2;

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

t=a%b;

a=b;

b=t;

}

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

printf("最小公倍数为:%d\n\n",n1*n2/a);

}}

扩展资料

C语言求最大公约数辗转相除法

#include<stdio.h>

intgcd(intm,intn);//将辗转相除的过程封装为函数,使主函数结构清晰。

intmain(void)

{

inta,b;

while(~scanf("%d%d",&a,&b)){//多组数据输入时的方式之一与while(scanf("%d%d",&a,&b)!=EOF)用途相同

printf("%d\n",gcd(a,b));

return0;

}

intgcd(intm,intn)

{

returnn?gcd(n,m%n):m;//此函数将辗转相除的过程以递归的形式呈现,简化程序属于常规套路。

}

本回答被网友采纳
第3个回答  推荐于2018-05-18
main()
{
int p,r,n,m,temp;
printf("Please enter 2 numbers n,m:");
scanf("%d,%d",&n,&m);//输入两个正整数.
if(n<m)//把大数放在n中,把小数放在m中.
{temp=n;
n=m;
m=temp;
}
p=n*m;//P是原来两个数n,m的乘积.
while(m!=0)//求两个数n,m的最大公约数.
{
r=n%m;
n=m;
m=r;
}
printf("Its MAXGongYueShu:%d\n",n);//打印最大公约数.
printf("Its MINGongBeiShu:%d\n",p/n);打印最小公倍数.
基本原理如下:
用欧几里德算法(辗转相除法)求两个数的最大公约数的步骤如下:
先用小的一个数除大的一个数,得第一个余数;
再用第一个余数除小的一个数,得第二个余数;
又用第二个余数除第一个余数,得第三个余数;
这样逐次用后一个数去除前一个余数,直到余数是0为止。那么,最后一个除数就是所求的最大公约数(如果最后的除数是1,那么原来的两个数是互质数)。
例如求1515和600的最大公约数,
第一次:用600除1515,商2余315;
第二次:用315除600,商1余285;
第三次:用285除315,商1余30;
第四次:用30除285,商9余15;
第五次:用15除30,商2余0。
1515和600的最大公约数是15。

两个正整数的最小公倍数=两个数的乘积÷两个数的最大公约数
由于两个数的乘积等于这两个数的最大公约数与最小公倍数的积。这就是说,求两个数的最小公倍数,可以先求出两个数的最大公约数,再用这两个数的最大公约数去除这两个数的积,所得的商就是两个数的最小公倍数。
例 求105和42的最小公倍数。
因为105和42的最大公约数是21,
105和42的积是4410,4410÷21=210,
所以,105和42的最小公倍数是210。本回答被网友采纳
第4个回答  2016-06-15
#include <stdio.h>

void main ()

{

 int m,n,m1,n1,t;

 printf ("请输入两个数(用空格隔开):");

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

 if (n > m)

 {

  t = m;

  m = n; 

  n = t;

 }

 m1 = m;

 n1 = n;

 while (n != 0)

 {

  t = m%n;

  m = n;

  n = t;

 }

 printf ("%d 和 %d 的最大公约数是:%d\n",m1,n1,m);

 printf ("最小公倍数是:%d\n",m1*n1/m);

}

c语言编程:输入两个正整数,求最大公约数和最小公倍数
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;i<=num1;i++)if(num1%i==0...

[C语言]编程:输入两个正整数,求其最大公约数和最小公倍数
include<stdio.h> int main(){ int m, n;int gcd, lcm;scanf("%d%d", &m, &n);gcd = m < n ? m : n;lcm = m > n ? m : n;do { if(m % gcd == 0 && n%gcd==0)break;gcd--;}while(1);do { if(lcm % m == 0 && lcm % n==0)break;lcm++;}while(1)...

C语言编程:输入两个正整数,输出其中最大公约数和最小公倍数。
printf("gongyueshu:%d\\n",a);printf("gongbeishu:%d\\n",num1*num2\/a);}

...两个正整数,计算两个数的最大公约数和最小公倍数?
printf("最大公约数为:%d\\n", gcd);printf("最小公倍数为:%d\\n", lcm);return 0;} 程序中,首先从键盘输入两个正整数,然后使用for循环计算它们的最大公约数。在for循环中,从1到两个数中较小的数进行循环,如果两个数都能被当前循环变量整除,则将当前循环变量赋值给gcd变量,最终得到最...

c语言中m、 n的最大公因数是多少?
输入两个正整数m和n,求其最大公约数和最小公倍数。解:程序:include <stdio.h> int main(){ int num1, num2, t,p;printf("请输入两个正整数:");scanf("%d,%d", &num1, &num2);\/\/7,8 p = num1*num2;while (t = num1%num2)\/\/7 1 0,循环结束 { num1 = num...

c语言程序题,输入两个正整数m和n,求其最大公约数和最小公倍数。
输入两个正整数m和n,求其最大公约数和最小公倍数,可以参考下面的代码:include <stdio.h> void main (){ int m, n, p, q;printf ("请输入整数m,n的值:\\n");scanf ("%d, %d", &m, &n);p=m*n;while (n!=0){ q=m%n;m=n;n=q; \/\/这段是求最大公约数的算法 } ...

用C程序编写:输出两个正整数m和n,求其最大公约数和最小公倍数。
我给楼主说下思路:先输入两个整数,然后判断两数的大小,用大的数对小的取模,然后小的数自减直到余数为0,这个时候小的数就是两数的最大公约数,然后将输入的两个数相乘再除以做大公约数,得到的结果就是最小公倍数

C#编写程序,输入两个正整数,求它们的最大公约数和最小公倍数。
WriteLine("第一个整数");a = Int32.Parse(Console.ReadLine());Console.WriteLine("第二个整数");b = Int32.Parse(Console.ReadLine());c = FindMaxCfd(a, b);d = FindMinCfd(a, b);Console.WriteLine("最大公因数="+c);Console.WriteLine("最小公倍数=" + d);} 运行结果 ...

题目:输入两个正整数m和n,求其最大公约数和最小公倍数。用C语言编程
输入两个正整数m和n, 求其最大公约数和最小公倍数.<1> 用辗转相除法求最大公约数 算法描述:m对n求余为a, 若a不等于0 则 m <- n, n <- a, 继续求余 否则 n 为最大公约数 <2> 最小公倍数 = 两个数的积 \/ 最大公约数 include int main(){ int m, n;int m_cup, n_cup...

c语言,输入俩个正整数n和m,求其最大公约数和最小公倍数
include<stdio.h>void main(){int a,b,i;scanf("%d %d",&a,&b);for(i=a+b;i>1;i--){if(a%i==0&&b%i==0){printf("最大公约数为%d,最小公倍数为%d\\n",i,a*b\/i);return 0;}}printf("最大公约数为1,最小公倍数为%d\\n",a*b);return 0;} 给你来个最简单的吧 ...

相似回答