C语言约分-化为最简分数

C语言中约分成最简分数

基础算法

#include<stdio.h>
int main()
{
    int a, b;
    int i=0;
    scanf("%d/%d", &a, &b);
do
    {
        i++;
        if(a%i==0&&b%i==0)
        {
            a=a/i;
            b=b/i;
            i=1;
        }
        
    }while(i<b);

printf("%d/%d",a,b);
    return 0;
}

辗转相除法(欧几里德算法)

以下两种方法原理相同,只是部分写法不同(均为C语言)

方法一

#include<stdio.h>
int Gcd(int m,int n)
{
    if(n==0)
       return m;
    return Gcd(n,m%n);
}
int main()
{
    int a, b;
    scanf("%d/%d", &a, &b);

printf("%d/%d",a/Gcd(a,b),b/Gcd(a,b));
}

方法二

#include<stdio.h>
int gcd(int a,int c)
{
    while(c!=0)
    {
        int t=a%c;
        a=c;
        c=t;
    }
    return a;
}

int main()
{
    int m, n;
    scanf("%d/%d", &m, &n);

 printf("%d/%d", m/ gcd(m,n),n / gcd(m,n));
}
  • 37
    点赞
  • 132
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值