题目:输入两个数n1和n2,输出它们的最大公约数
例: 输入12 18
输出6
分析:计算机最擅长枚举。可以先找出两个数中的最小数字,用min保存下来,作为循环的条件,然后依次判断1~min之间的数字,看其是否满足:能同时整除n1与n2,记下这个数字t。知道循环结束,则曾经记下的t的最大值就是n1与n2的最大公约数。
方法一:“枚举法”
“枚举”具体步骤如下--->
1.设t为1
2.如果u和v都能被t整除,则记下这个t
3.t加1后重复第2步,直到t等于u或v
4.那么曾经记下的最大的可以同时整除u和v的t就是最大公约数
代码:
写法一:先找出最小数min,以min作为约束条件
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int main()
{
int min, i, t, n1, n2;
scanf("%d %d", &n1, &n2);
//找出最小数
min = n1;
if (n2 > n1)
{
min = n2;
}
//枚举求最大公约数
for (i = 1; i <= min; i++)
{
if (n1%i == 0 && n2