首页 > 其他分享 >求最大公约数的三种方法:C语言

求最大公约数的三种方法:C语言

时间:2023-10-06 12:55:05浏览次数:35  
标签:gcd 穷举法 int scanf d% C语言 最大公约数 三种

求最大公约数之穷举法
求最大公约数之穷举法 
    int a,b,c,gcd;
    scanf("%d%d",&a,&b);
    c = a<b?a:b;
    int i=1;
    for(i=c;i>=1;i--){
        if(a%i==0 && b%i==0){
            gcd=i;
            printf("GCD=%d\n",gcd);
            break;
        }
    }
    return 0;

 

求最大公约数之更相减损术 
求最大公约数之更相减损术 
    int a,b,c,d,gcd;
    scanf("%d%d",&a,&b);
    if(a%2==0&&b%2==0){
        c=a<b?a:b;
        gcd=c/2;
        printf("1\n%d",gcd);
    }else{
        while(a!=b){
            d = a>b?b:a;
            a = a>b?a-b:b-a;
            b=d;
        }
        gcd = a;
        printf("2\n%d",gcd);
        
    }
    return 0;

 


求最大公约数之辗转相除法
求最大公约数之辗转相除法 
    int a,b,c,d,gcd;
    scanf("%d%d",&a,&b);
    c = a<b?b%a:a%b;
    d = a<b?a:b;
    if(c==0){
        gcd=a<b?a:b;
        printf("gcd=%d\n",gcd);
    }else{
        while(c!=0){
        int i;
        i = c;
        c=d%c;
        d = i;
    } 
    printf("gcd=%d",d);
    }
    
    return 0;
}

 

标签:gcd,穷举法,int,scanf,d%,C语言,最大公约数,三种
From: https://www.cnblogs.com/yonlanmoji/p/17744459.html

相关文章

  • sv的LSB 使用+SV的protect类型+RAL模型的lock原因+C语言结构体中的冒号用法+uvm版本在
    sv的LSB使用https://blog.csdn.net/gsjthxy/article/details/90722378等价关系[LSB+:STEP]=[LSB+STEP:LSB]伪代码:bit[1023:0]mem;bit[7:0]data;j=0..100mem[j*8+:8]=data;//[7:0],[15:8],[23:16]SV的protect类型https://blog.csdn.net/qq_37573794/ar......
  • 常见的C语言执行效率优化方法
    C语言之心效率优化写代码时考虑代码的执行效率是一个好习惯,嵌入式开发多年,让自己养成了这样的习惯。优化C语言代码的执行效率是一项重要的任务,可以通过多种方法和注意事项来实现。下面列出了一些常用的方法和注意事项,并结合具体实例进行详细讲解:选择合适的数据结构使用合适的数......
  • C语言逗号表达式和赋值表达式
    C语言逗号表达式和赋值表达式笔试常考这个,没办法#include<iostream>usingnamespacestd;intmain(intargc,charconst*argv[]){inta=0,b=0,c=0,d=0;//1.逗号表达式/*表达式1,表达式2,表达式3……表达式n;逗号表达式的求解过程是......
  • 实验1 C语言输入输出和简单程序编写
    1.实验任务11.c1#include<stdio.h>23intmain()4{5printf("o\n");6printf("<H>\n");7printf("II\n");89return0;10}1-1.c1#include<stdio.h>23in......
  • C语言:‘for‘ loop initial declarations are only allowed in C99 mode
    求最大公约数之穷举法mistake: because: 只允许在C99模式下使用‘for’循环初始化声明  solution:不在for()中初始化生命变量 ......
  • c语言代码(递归)练习23
    需求:求解用户给的第几位斐波那契数,斐波那契数1,1,2,3,5,9,13,22,35,55....:这位数等于前两位数相加。#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>intayue(inti){if(i<=2){return1;}else{returnayue(i-1)+......
  • c语言代码(递归)练习22
    需求:利用递归函数求解用户输入数字的阶乘。#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>intayue(inti){intx=0;intcount=1;for(x=1;x<=i;x++){count*=x;}returncount;}intayue2(intn){if(n......
  • c语言代码(递归)练习21
    需求:在不使用临时变量的情况下,利用函数求取字符串的长度#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>intmy_strlen(char*n){inti=0;while(*n!='\0'){i++;n++;}returni;}//递归函数:大事化小//my_strlen("......
  • 本振系统设计-三种频率合成技术
    频率合成技术主要分为直接合成技术与间接合成技术。直接合成技术又包括直接模拟合成技术与直接数字合成技术(DDS)。直接模拟合成技术是最早期的频率合成技术,其通过一系列的模拟器件进行倍频、混频、分频等算术运算从而合成固定频率,再利用窄带滤波器滤出所需频率。......
  • 实验1 C语言输入输出和简单程序编写
    1.实验任务1 task1_1源代码:1#include<stdio.h>2#include<stdlib.h>3intmain()4{5printf("0\n");6printf("<H>\n");7printf("II\n");8printf("0\n");9prin......