Chinaunix首页 | 论坛 | 博客
  • 博客访问: 550129
  • 博文数量: 181
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1498
  • 用 户 组: 普通用户
  • 注册时间: 2013-12-22 15:17
个人简介

用发呆的时间来理清自己的思绪

文章存档

2015年(7)

2014年(134)

2013年(40)

分类: C/C++

2014-06-06 21:36:08

求最大公约数是编程考察中比较常见的一种题型,其求解算法如下:
1、首先从终端输入两个数字;
2、找到两个数中的最小的一个数字,然后用一个第三方变量min来保存;        
3、设置一个循环变量,范围是从1到min([1,min]),将输入的两个数分别对i进行求余操作,如果这两个数同时对i求余的结果为0,则说明i是其两者的公约数;
4、用一个变量记录这个i值,直到循环退出,最后一次记录的i值保证是这两个数的最大公约数;

点击(此处)折叠或打开

  1. #include <stdio.h>

  2. int main(int argc, const char *argv[])
  3. {
  4.     int data1 = 0,data2 = 0,i = 0;
  5.     int min = 0,comm_div = 0;
  6.     int ret = 0;


  7.     printf("Please input two integer num num1 and num 2\n");
  8.     printf("data1\tdata2\n");

  9.     ret = scanf("%d\t%d",&data1,&data2);
  10.     while(getchar() != '\n'); //清缓冲
  11.     
  12.     if (ret != 2)
  13.     {
  14.         printf("input error !\n");

  15.         return -1;
  16.     }

  17.     min = data1 < data2 ? data1 : data2;

  18.     for(i = 1;i <= min;i++)
  19.     {
  20.         if((data1 % i == 0) && (data2 % i ==0))
  21.         {
  22.             comm_div = i;
  23.         }
  24.     }

  25.     printf("%d and %d 的最大公约数是:%d\n",data1,data2,comm_div);


  26.     
  27.     return 0;
  28. }
结果如下:

点击(此处)折叠或打开

  1. litong@ltubuntu:~/data_struct$ ./a.out
  2. Please input two integer num num1 and num 2
  3. data1 data2
  4. 12     8
  5. 12 and 8 的最大公约数是:4
  6. litong@ltubuntu:~/data_struct$ ./a.out
  7. Please input two integer num num1 and num 2
  8. data1 data2
  9. 55      44
  10. 55 and 44 的最大公约数是:11

阅读(695) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~