python实现将将输入的可约分数化简为不可约分数

    有时候需要将分数化简,比如:3/12就应该表示为:1/4

                                                       12/3就应该表示为:4

    等等,今天就简单使用python实现一下,思想很简单:

1.判断分母是否为0,为0则终止,输入错误

2.判断分子是否可以整除分母,是这说明输入的形式实际为一个整数,化简输出即可

3.找到二者中较小的数字,以此为基准,遍历从1到该数,看原始数字分母分子是否可以同时整数遍历到的数字,若能则更新分子分母,否则继续遍历

实现如下:

#!usr/bin/env python
#encoding:utf-8

'''
__Author__:沂水寒城
功能:输入两个整数,转化为不可约分数形式
'''

import random


def random_pair_num_generator(total_num=20, max_value=1000):
    '''
    生成随机数对作为分子分母,用于测试
    '''
    num_list=[]
    for i in range(total_num):
        num1=random.randint(1,max_value)
        num2=random.randint(1,max_value)
        num_list.append([num1,num2])
    return num_list


def transform_num2_ratio(num1, num2):
    '''
    输入:分子,分母
    输出:不可约分数形式
    '''
    if num2==0:
        print '分母不能为0,重新输入!'
    elif num2%num1==0:
        print num2/num1
    else:
        temp=min(num1, num2)
        for i in range(1,temp):
            if num1%i==0 and num2%i==0:
                num1/=i 
                num2/=i 
        print str(num1)+'/'+str(num2)


def main_func(num_list):
    '''
    主调用函数
    '''
    for i in range(len(num_list)):
        one_num=num_list[i]
        print '------------------------------------------------------------------'
        transform_num2_ratio(one_num[0], one_num[1])


if __name__ == '__main__':
    transform_num2_ratio(4,6)
    transform_num2_ratio(4,12)
    transform_num2_ratio(4,0)
    num_list=random_pair_num_generator(total_num=20, max_value=1000)
    main_func(num_list)

结果如下:

2/3
3
分母不能为0,重新输入!
------------------------------------------------------------------
49/45
------------------------------------------------------------------
127/60
------------------------------------------------------------------
190/473
------------------------------------------------------------------
951/254
------------------------------------------------------------------
47/313
------------------------------------------------------------------
676/387
------------------------------------------------------------------
255/563
------------------------------------------------------------------
124/87
------------------------------------------------------------------
325/43
------------------------------------------------------------------
694/293
------------------------------------------------------------------
369/295
------------------------------------------------------------------
311/317
------------------------------------------------------------------
89/91
------------------------------------------------------------------
13/103
------------------------------------------------------------------
74/149
------------------------------------------------------------------
5/48
------------------------------------------------------------------
759/277
------------------------------------------------------------------
721/125
------------------------------------------------------------------
979/644
------------------------------------------------------------------
179/38
[Finished in 0.3s]


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Together_CZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值