一、题目分析
求N个数的最大公约数和最小公倍数。用C或C++或java或python语言实现程序解决问题。
本次作业利用辗转相除法来对n个数求最大公约数和最小公倍数。
1、求两个数的最大公约数
其算法过程为: 前提:设两数为a,b设其中a 做被除数,b做除数,temp为余数
①大数放a中、小数放b中;
②求a/b的余数;
③若temp=0则b为最大公约数;
④如果temp!=0则把b的值给a、temp的值给a;
⑤返回a值。
2、求n个数的最大公约数
其算法过程为:前提:设两个数i、c
①令c=t[0] (即数组内第一个数);
②设一个对于t[i]的循环,从i=1开始调用gcd函数令c与t[1]进行求两个数的最大公约数的操作,将其求出来的值赋给c,如此循环···
③当数组内所有值都计算结束时返回c值。
3、求两个数的最小公倍数
利用求最大公约数的函数,直接返回求出a*b/gcd(a,b)的值。
4.求n个数的最小公倍数
与求n个数的最大公约数思想相似,即先求前两个数的最小公倍数,然后将计算出来的值与下一个数进行求最小公倍数的操作,当数组内所有值运算结束后,返回最终的值。
二、算法设计
求两个数最大公约数的流程图
三、算法实现
/*用辗转相除法求n个数的最大公约数及最小公倍数*/
#include <stdio.h>
#define N 10000 /**定义数组长度,自定义**/
/**输入函数,输入个数和计算数,参数为输入数组**/
int input(int t[])
{
int i,n;
int k=1;
printf("请输入所计算值的数目(n>=2):"); /**输入计算值个数**/
scanf("%d",&n);