• 最大公约数


     1 /*
     2     Name: 求最大公约数的三种方法 
     3     Copyright: 
     4     Author: 润青 
     5     Date: 01/11/18 10:57
     6     Description: 穷举法、辗转相除法、相减法 
     7 */
     8 #include<stdio.h>
     9 void gcd1(int m,int n);
    10 void gcd2(int m,int n); 
    11 void gcd3(int m,int n);  
    12 int m,n; 
    13 int main(){
    14     int sum=10; 
    15     while(sum--){
    16         scanf("%d%d",&m,&n);
    17         gcd1(m,n);
    18         gcd2(m,n);
    19         gcd3(m,n);
    20     } 
    21     
    22     return 0; 
    23 }
    24 void gcd1(int m,int n){
    25     //printf("穷举法
    
    "); 
    26     int min;
    27     int mod1,mod2;
    28     int count=0; 
    29     if(m>=n)
    30         min=n;
    31     else
    32         min=m;
    33     while(1){
    34         mod1=m%min;
    35         mod2=n%min;
    36         count++;
    37         if(mod1==0&&mod2==0){
    38             printf("最大公约数:%d
    ",min);
    39             printf("count=%d
    ",count); 
    40             break; 
    41         } 
    42         else{
    43             min--;
    44         }  
    45     }
    46 }
    47 void gcd2(int m,int n){
    48     //printf("辗转相除法
    
    "); 
    49     int max,min;
    50     int count = 1; 
    51     if(m>=n){
    52         max=m;
    53         min=n; 
    54     } 
    55     else{
    56         max=n;
    57         min=m; 
    58     }
    59       int mod=max%min;
    60     while(mod!=0){
    61         max=min;
    62         min=mod;
    63         mod=max%min; 
    64         count++; 
    65     }
    66     printf("最大公约数:%d
    ",min);
    67     printf("count=%d
    ",count); 
    68 }
    69 void gcd3(int m,int n){
    70     //printf("相减法
    
    "); 
    71     int max,min;
    72     int count = 1; 
    73     if(m>=n){
    74         max=m;
    75         min=n; 
    76     } 
    77     else{
    78         max=n;
    79         min=m; 
    80     }
    81     int sub=max-min;
    82     while(sub!=0){
    83         if(min>=sub){
    84             max=min;
    85             min=sub; 
    86         } 
    87         else{
    88             max=sub;
    89             min=min; 
    90         } 
    91         sub=max-min;
    92         count++; 
    93     }
    94     printf("最大公约数:%d
    ",min);
    95     printf("count=%d
    ",count); 
    96 } 
  • 相关阅读:
    389 Directory Server RHEL 6.0以上客户端安装方法
    389 Directory Server RHEL 6.0以下客户端安装方法
    堆排序算法
    单链表倒置(递归与非递归)
    发帖水王问题及扩展
    2.5 k个最大的数
    2.7 最大公约数
    进制转化的算法问题。
    boost图库简单操作
    C++编程必备
  • 原文地址:https://www.cnblogs.com/nyist0/p/9888795.html
Copyright © 2020-2023  润新知