求N个数的最大公因数(C语言)

我们求最大公因数之前,先要把数据排序为有序序列,这里我们采用冒泡排序。

代码如下:

#include<stdio.h>
#include<stdlib.h>
void get_number(int array[],int b)//用来获取数据
{ int i=0;
for(i=0;i<=b-1;i++)
{ printf("请输入第%d个数:",i+1);
scanf("%d",&array[i]);
while(array[i]<=0)//如果输入的是负数的话,重新输入
{ printf("请输入正整数\n");
scanf("%d",&array[i]);
}
}
printf("输入成功\n");
printf("\n");
}

void BubbleSort(int array[],int n)//冒泡排序
{ int i,j,temp;
for(i=0; i<n-1; i++) //外循环控制循环趟数
{
for(j=0; j<n-1-i; j++)//内循环选择要进行比较的数
{
if(array[j]>array[j+1])
{ temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
printf("排序后的%d个数:",n);
for(i=0;i<n;i++)
{
printf("\t%d",array[i]);
}
}

void GCD(int array[],int b)//求最大公因数
{ int e;
e=array[0];
int c=1;
int d=0;
int f;
f=array[b-1];
while(c!=0)
{
c=0;
for(d=0;d<b;d++)
{
if(array[d]%e==0)
c+=0;
else
c+=1;
}
if(c!=0)
e--;
}
printf("\n");
printf("\n这几个数的最大公因数为:\t%d\n\n",e);
}

void home()
{ int a[50];
int b;
printf("求最大n个数的最大公因数");
printf("\n");
printf("请输入你要得到几个数的最大公因数:");
scanf("%d",&b);
get_number(a,b); //得到输入数据
BubbleSort(a,b); //冒泡排序
GCD(a,b); //计算最大公因数
}

int main()
{
while(1)
{
home();
}
system("pause");
return 0;
}

运行测试结果如下:

求N个数的最大公因数(C语言)_排序算法

我是罡罡同学,一位初入网安的小白。☜(ˆ▽ˆ)