广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 2230 个阅读者
 
发表文章 发表投票 回覆文章
  可列印版   加为IE收藏   收藏主题   上一主题 | 下一主题   
ylk2468 手机
数位造型
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x1
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片
推文 x0
[C/C++] gcd的四则运算
输入两个分数(有理数)的分子和分母,以及四则运算符号,根据不同的运算
符号将两分数作适当运算, ..

访客只能看到部份内容,免费 加入会员 或由脸书 Google 可以看到全部内容



献花 x0 回到顶端 [楼 主] From:台湾中华电信 | Posted:2005-09-25 19:31 |
Darren
数位造型
个人文章 个人相簿 个人日记 个人地图
社区建设奖
小有名气
级别: 小有名气 该用户目前不上站
推文 x4 鲜花 x144
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

写好了, 试试 (C#)
复制程式
long a=1,b=10,c=4,d=5;
                     long Em,fm;

                     //通分
                     long bj = 0; //a和b要乘的倍数
                     long dj = 0; //c和d要乘的倍数
                     if(b%d==0)
                     {
                            dj = b/d;
                            bj = 1;
                     }
                     else if(d%b==0)
                     {
                            bj = d/b;
                            dj = 1;
                     }
                     else
                     {       
                            //这是最偷懒的方法,容易溢位,建议参考下面的辗转相除法求得b, d最小公倍数
                            bj = d;
                            dj = b;
                     }

                     Em = (a*bj)-(c*dj);  //-号可替换成其它四则运算子
                     fm = b*bj;
                     
                     long E = Em,f =fm;

                     //约分
                     long yinsu = 1;//分子母的最大公因数

                     if(E==f)
                     {
                            Em=1;
                            fm=1;
                     }
                     else if(E%f==0)
                     {
                            yinsu = f;
                     }
                     else if(f%E==0)
                     {
                            yinsu = E;
                     }
                     else
                     {  
                            //辗转相除法
                            do
                            {       
                                   E = E%f;       
                                   try
                                   {
                                          if(f%E!=0)
                                          {
                                                 f = f%E;
                                          }
                                          else
                                          {
                                                 yinsu = E;
                                                 break;
                                          }
                                   }
                                   catch
                                   {   yinsu = f;
                                          break;
                                   }
                            }while(true);//while条件式不重要,里面有跳出的条件式
                     }
                     MessageBox.Show((Em/yinsu).ToString() + "/" + (fm/yinsu).ToString());


献花 x0 回到顶端 [1 楼] From:台湾 和信超媒体宽带网 | Posted:2005-09-26 12:16 |

首页  发表文章 发表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.051087 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言