n个数的最大公约数 最小公倍数

本文介绍了一种使用辗转相除法求解两个整数的最大公约数及最小公倍数的方法,并进一步扩展到了求解多个整数的最大公约数与最小公倍数。通过具体的函数实现与测试案例展示了该算法的有效性和正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <stdio.h>
int divisor (int a,int b)    /*自定义函数求两数的最大公约数*/
{
  int  temp;        
  if(a<b)            
    { temp=a;a=b;b=temp;} 
   while(b!=0)         
    {
      temp=a%b;
      a=b;              /*变量数值交换*/
      b=temp;
    }
  return (a);            /*返回最大公约数到调用函数处*/ 
}
int multiple (int a,int b)  /*自定义函数求两数的最小公倍数*/
{
  int temp;
  temp=divisor(a,b);  /*再次调用自定义函数,求出最大公约数*/
  return  (a*b/temp); /*返回最小公倍数到主调函数处进行输出*/
}
void display(int a[],int n) //求n个数的最大公约数,最小公倍数
{
	int x=a[0];
	int y=0;
		for(int i=1;i<n;i++)   //循环求
		{
			y=a[i];
			x=divisor(x,y);
		}
		printf("最大公约数为%d:\n",x);
		int p=a[0];
		int q=0;
		for(int j=1;j<n;j++)
		{
			q=a[j];
			p=multiple(p,q);
		}
		printf("最小公倍数为%d:\n",p);
}

int main()
{
	int a[10000];
	int n=0;
		printf("请输入要求的个数n\n");
	scanf("%d",&n);
	for(int i =0;i<n;i++)  //输入
	{
		scanf("%d",&a[i]);
	}
display(a,n);
}

一、题目分析

最大公约数:采用展转求余法得2个数的最大公约数。

最小公倍数:先求最大公约数,然后用a*b/最大公约数得两个数的最小公倍数。

N个数的最大公约数,最小公倍数:先取数值前两个数求出最大公约数,最小公倍数,再将求出来的数和下一个数进行最大公约数,最小公倍数求解,以此类推,直到将所有=数都求一遍,最后的结果就是n个数的最大公约数,最小公倍数。

二、测试,调试,运行结果

   (1)测试divior()函数

测试代码:

int a=9,b=132;

int x=divior(a,b);

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

        (2)测试mutiple()函数

int a=9,b=132;

int x=mutiple(a,b);

printf(“最小公倍数为:%d”,x);

 

      (3)运行结果:

 

 

三、总结:

   1:熟练的运用了辗转相除法求最大公约数,最小公倍数。

2:对n个数求解最大公约数,最小公倍数有了基本认识,采用循环分次求解,得最终结果。

3:了解了最大公约数和最小公倍数之间的关系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值