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

一、题目

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

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

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

二、设计思路

三、源代码

#include <stdio.h>
#define N 100            
int check(int t[],int n);         //检查输入是否正确(函数声明)
int input(int t[])                //输入函数
{
	int i,n;
	int k=1;
	printf("请输入所计算值的数目:");
	scanf("%d",&n);
	while (k)                          
	{ 
		printf("请输入您想要查询的数值:\n");
		for (i=0;i<n;i++)
		{
			printf("请输入第%d个数:",i+1);
			scanf("%d",&t[i]); 
		}
	    k=check(t,n);           //调用输入判断函数
	}
		return n;
}
int check(int t[],int n)        //输入判断函数,检查输入值是否有0
{
	int i;
	for (i=0;i<n;i++)
	{
	   if (t[i]==0) 
	{ 
	   printf("您输入的数值有0,请重新输入。\n");
	   return 1;
	} 
	}
	return 0;
}
int gcd1(int a,int b)           //2个数求最大公约数(穷举法)
{
	int t;
	for (t=a;t>0;t--)
	{
	  if(a%t==0&&b%t==0)
	  return t;
	}
}
int gcd2(int t[],int n)         //n个数求最大公约数
{
	int i;
	int c=t[0];
	for (i=1;i<n;i++)
	{
	   c=gcd1(c,t[i]);
	}
	return c;
}
int mul1(int x,int y)           //2个数求最小公倍数
{
    return x*y/gcd1(x,y);
}
int mul2(int t[],int n)         //n个数求最小公倍数
{
	int i;
	int s=1;
	for (i=0;i<n;i++)
	{
	  s=mul1(s,t[i]);
	}
	return s;
}
int main()
{
	int t[N];                           
	int n;                               
	int choose=1;
	while (choose)                                 //判断是否继续进行
	{
		n=input(t);
		printf("最大公约数为 %d\n",gcd2(t,n));     //输出gcd2函数返回值,最大公约数
		printf("最小公倍数为 %d\n",mul2(t,n));     //输出mul2函数返回值,最小公倍数
		printf("退出请按0,继续请按1 :");
		scanf("%d",&choose);
	}
	return 0;
}

四、

  • 运行结果、测试及调试

运行结果

五、心得体会

    通过此次编程再次理解了用穷举法求去求最大公约数和最小公倍数,在检查输入的正确性时刚开始用的是循环结果一直无法跳出循环,之后改成了两个函数,一个输入函数一个检查函数,通过函数调用实现检查输入的正确性,n个数的最大公约数和最小公倍数先利用函数求两个数在进行调用实现功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值