C语言实现求多个数字的最大公约数和最小公倍数

求N个数的最大公约数和最小公倍数。用C语言实现程序解决问题。
1.程序风格良好(使用自定义注释模板)
2.提供友好的输入输出,并进行输入数据的正确性验证。
该程序含有两个子函数,分别是求两个数的最大公约数和最小公倍数的,当需要求多个数字时只需进行嵌套调用就可,程序虽小,也是心血。

#include<stdio.h>

int calculate(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 calculate (int a,int b);
	int temp,s;
	temp=calculate(a,b); 
	s=a*b/temp;
	return  (s);
}

int main()
{
	int n,i,q,r[10],x,y,p,z,w;
	printf("请输入需要计算的数字个数:");
	scanf("%d",&n);
	printf("\n请输入需要计算的数字:");
	for(i=0;i<n;i++)
	{
		scanf("%d",&r[i]);
	}
	x=r[0];
		for(i=0;i<n;i++)
	{
		y=r[i];
		if(x>y)
		{
			z=x;
			x=y;
			y=z;
		}
			p=calculate(x,y);
	}
	x=r[0];
	for(i=1;i<n;i++)
	{
		y=r[i];
		if(x<y)
		{
			z=x;
			x=y;
			y=z;
		}
		q=multiple(x,y);
	}
	 printf("最大公约数为:%d\n",p);
	 printf("最小公倍数为:%d",q);
	 return 0;
}

特此附上水货流程图一张(勿喷)
C语言实现求多个数字的最大公约数和最小公倍数