求最大公约数是编程考察中比较常见的一种题型,其求解算法如下:
1、首先从终端输入两个数字;
2、找到两个数中的最小的一个数字,然后用一个第三方变量min来保存;
3、设置一个循环变量,范围是从1到min([1,min]),将输入的两个数分别对i进行求余操作,如果这两个数同时对i求余的结果为0,则说明i是其两者的公约数;
4、用一个变量记录这个i值,直到循环退出,最后一次记录的i值保证是这两个数的最大公约数;
-
#include <stdio.h>
-
-
int main(int argc, const char *argv[])
-
{
-
int data1 = 0,data2 = 0,i = 0;
-
int min = 0,comm_div = 0;
-
int ret = 0;
-
-
-
printf("Please input two integer num num1 and num 2\n");
-
printf("data1\tdata2\n");
-
-
ret = scanf("%d\t%d",&data1,&data2);
-
while(getchar() != '\n'); //清缓冲
-
-
if (ret != 2)
-
{
-
printf("input error !\n");
-
-
return -1;
-
}
-
-
min = data1 < data2 ? data1 : data2;
-
-
for(i = 1;i <= min;i++)
-
{
-
if((data1 % i == 0) && (data2 % i ==0))
-
{
-
comm_div = i;
-
}
-
}
-
-
printf("%d and %d 的最大公约数是:%d\n",data1,data2,comm_div);
-
-
-
-
return 0;
-
}
结果如下:
-
litong@ltubuntu:~/data_struct$ ./a.out
-
Please input two integer num num1 and num 2
-
data1 data2
-
12 8
-
12 and 8 的最大公约数是:4
-
litong@ltubuntu:~/data_struct$ ./a.out
-
Please input two integer num num1 and num 2
-
data1 data2
-
55 44
-
55 and 44 的最大公约数是:11
阅读(695) | 评论(0) | 转发(0) |