for(z=0; z<10000000; z++) 循环只是为了增加程序的运行时间,
让我们体会算法的时间复杂度。
算法一:短除法
想法,采用短除法找出2个数的所有公约数,将这些公因子相乘,结果就是2个数的最大公约数。【找公因子,只能使用蛮力法】
#include
#include
void main()
{
int m=28,n=72;
int i,f=1;
int z;
clock_t start,finish;
double duration;
start= clock();
for(z=0; z<10000000; z++)
{
for(i=2;i<=m&&i<=n;)
{
while(m%i==0&&n%i==0)
{
f*=i;
m/=i;
n/=i;
}
i++;
}
}
finish=clock();
duration=(double)(finish-start)/CLOCKS_PER_SEC;
printf("time=%lf seconds\n",duration);
printf("result=%d\n",f