求N个数的最大公约数和最小公倍数(C语言实现)
一、题目分析:
基本要求为:求N个数的最大公约数和最小公倍数,用C或C++或java或python语言实现程序解决问题;提高要求为:Hankson问题。
基本要求较为简单,是对GCD算法的进一步运用,与第一次上机作业有相似之处,选择辗转相除法求解最大公约数,用求解的最大公约数和整数乘积计算最小公倍数并输出。
二、 算法思路:
求N个数的最大公约数和最小公倍数,要求为N个数,所以选择数组存储N个数的数值,使用随机函数对用户要求的整数个数进行赋值,将随机函数生成的N个数存入数组中。后对数组中的数进行运算,用for循环运行n+1次辗转相除法求得最大公约数,再根据数学定义,求得数组所有数的乘积除以最大公约数。
三、 源代码:
基本要求:
#include<stdio.h>
#include<stdlib.h> //随机生成函数头文件
void main()
{
int i,k,m,n;
int a,b,temp,r;
int w[101];
printf("Please
input the quantity of integer:"); //输入整数数量
scanf("%d",&n);
for(i=1;i<n+1;i++) //利用随机函数给n个整数赋值
{
w[i]=1+rand()%100;
printf("No.%d is %d,\n",i,w[i]);
}
b=w[1];
for(k=1;k<n+1;k++) //使用n+1次辗转相除法以求n个数的最大公约数
{ a=w[k];
if(a<b)
temp=a;a=b;b=temp;
r=a%b;
while(r!=0) //辗转相除法
{