求解N个数的最大公约数和最小公倍数(C语言实现)

题目要求

求解N个数的最大公约数和最小公倍数。用C或C++或java或python语言实现程序解决问题。

1.程序风格良好(使用自定义注释模板)

2.提供友好的输入输出,并进行输入数据的正确性验证。

算法实现(程序源代码)

#include <stdio.h>

/* gcd()函数实现对两数最大公约数的求解 */
int gcd(int m, int n)
{
	int temp;
	if(m<n)
	{
		temp = m;
		m = n;
		n = temp;
	}
	while(n!=0)
	{
		temp = m%n;
		m = n;
		n = temp;
	}
	return(m);

}

/* lcm()函数实现对两数最小公倍数的求解 */
int lcm(int m, int n)
{
	int gcd(int m, int n);
	int temp;
	temp = gcd(m, n);
	return(m*n/temp);
}

/* max_common_divisor()函数实现对一组数最大公约数的求解 */
int max_common_divisor(int a[], int p)
{
	int i = a[0];
	int j = a[1];
	int k = gcd(i, j);    // k存放一组数的最大公约数,通过调用gcd()函数求k
	int r = 0;

/* 通过for循环依次从数组中取出每个数,求其与k的最大公约数 */
	for(r=2; r<p; r++)
	{
		k = gcd(k, a[r]);    // 更新k的值
	}

	return(k);
}

/* min_coommon_multipe()函数实现对一组数最小公倍数的求解 */
int min_common_multiple(int a[], int p)
{
	int i = a[0];
	int j = a[1];
	int k = lcm(i, j);    // k存放一组数的最小公倍数,通过调用lcm()函数求k
	int r = 0;

	for(r=2; r<p; r++)
	{
		k = lcm(k, a[r]);
	}

	return(k);
}

void main()
{
	int x, y;    // x存放整组数的最大公约数,y存放整组数的最小公倍数
	int p;    // p存放用户键入整数的个数,作为循环的判断条件
	int i;
	int a[1000];    //定义数组a

	printf("请输入您即将输入整数的个数:\n");
	scanf("%d", &p);

	printf("请输入所要求解的整数:\n");
	for(i=0; i<p; i++)     // 通过for循环为数组赋值
		scanf("%d", &a[i]);

	x = max_common_divisor(a, p);
	y = min_common_multiple(a, p);
	printf("该组数的最大公约数为:%d\n", x);
	printf("该组数的最小公倍数为:%d\n", y);
}

 

 

 

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值