该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
unsigned int ***(unsigned int x,unsigned int y);
int main()
{
unsigned int a,b,c;
printf("The first number:\n");
scanf("%d",&a);
printf("The second number:\n");
scanf("%d",&b);
c=***(a,b);
printf("最大公约数是:%d\n",c);
return 0;
}
unsigned int ***(unsigned int x,unsigned int y)
{
unsigned int t;
t=x
while(x%t!=0||y%t!=0)
t--;
return t;
}
这是穷举法计算两个数的最大公约数的一个源程序,遇到一个感兴趣的问题。
比如,在我计算机上
用它计算100亿和100亿零1的最大公约数用时6s左右,
计算1000亿和1000亿零1的最大公约数用时6s左右,
计算1万亿和1万亿零1的最大公约数用时14s左右,
计算10万亿和10万亿零1的最大公约数用时6s左右,
计算100万亿和100万亿零1的最大公约数用时1s左右,
计算1000万亿和1000万亿零1的最大公约数用时6s左右,
计算1亿亿和1亿亿零1的最大公约数用时7s左右,
计算10亿亿和10亿亿零1的最大公约数用时7s左右,
My god!!! 我凌乱了,用时就算没有比例关系也该越来越长吧,怎么这样的结果?
希望吧友们帮忙运行一下然后帮忙解释。
( 注:在我用C4droid
计算1000万和1000万零1的最大公约数用时约1s,
1亿和1亿零1的最大公约数用时约9s,
10亿和10亿零1的最大公约数用时约90s, )