黑马程序员技术交流社区

标题: java算法题。小菜鸟的大问题 [打印本页]

作者: 孤影卓尔    时间: 2014-2-24 15:57
标题: java算法题。小菜鸟的大问题
java接收键盘输入,类似于“5/6”这种样式的分数,然后判断是否是最简真分数。是则输出“5/6是最简真分数”;不是则输出“5/6不是最简真分数”然后继续接收键盘输入,直到输入“-1”跳出运行。最简真分数就是分子小于分母,不能再约分。问该怎么实现??

作者: 丶小天    时间: 2014-2-24 15:58

复制代码

作者: e.c    时间: 2014-2-24 16:04
本帖最后由 e.c 于 2014-2-24 16:06 编辑

求两个数是否有公约数。
作者: 丶小天    时间: 2014-2-24 16:06
上面那个回帖点错了,现敲的代码,如下:
  1. import java.util.regex.Pattern;
  2. import java.io.*;
  3. public class Demo {
  4.         public static void main (String args[]) throws IOException {
  5.                 Pattern regex = Pattern.compile("[0-9]*/[0-9]*");
  6.                 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  7.                 String num = "";
  8.                 while (!(num = br.readLine()).equals("-1")) {
  9.                         if (!regex.matcher(num).matches()) {
  10.                                 System.out.println("格式不正确,请重新输入!");
  11.                                 continue;
  12.                         }
  13.                         int a = Integer.parseInt(num.substring(0, num.indexOf('/')));
  14.                         int b = Integer.parseInt(num.substring(num.indexOf('/')+1));
  15.                         if (a >= b || !isRelativelyPrime(a, b))
  16.                                 System.out.println(num + "不是最简真分数");
  17.                         else
  18.                                 System.out.println(num + "是最简真分数");
  19.                 }
  20.         }
  21.         private static boolean isRelativelyPrime (int a, int b) {
  22.                 int tmp = 0;
  23.                 while (a > 0) {
  24.                         tmp = b % a;
  25.                         b = a;
  26.                         a = tmp;
  27.                 }
  28.                 if (b == 1)
  29.                         return true;
  30.                 else
  31.                         return false;
  32.         }
  33. }
复制代码

作者: syw02014    时间: 2014-2-24 16:13
本帖最后由 syw02014 于 2014-2-24 16:15 编辑

核心代码写给你:
public static int Is_ZDGYSHU(int a,int b)
{
        int s=0;
        for(;a>0;)
        {
                s=b%a;
                b=a;
                a=s;
        }
        if (b==1)
                return 1
        else
                return 0;
        }


作者: e.c    时间: 2014-2-24 16:16
e.c 发表于 2014-2-24 16:04
求两个数是否有公约数。

        private static boolean haveCommonDivisor(int i1, int i2) {
                int end = i1 > i2 ? i2 : i1;
                for (int i = 2; i <= end; i++) {
                        if (i1 % i == 0 && i2 % i == 0)
                                return false;
                }
                return true;
        }
作者: flying    时间: 2014-2-24 16:57
本帖最后由 flying 于 2014-2-24 17:10 编辑
  1. public class Test
  2. {
  3.         public static void main(String[] args) throws Exception {
  4.                 fun();
  5.         }

  6.         private static void fun() throws Exception{
  7.                 BufferedReader bufr =
  8.                                 new BufferedReader(new InputStreamReader(System.in));
  9.                 String line=null;
  10.                 while(!(line=bufr.readLine()).equals("-1")){
  11.                         String []str =line.split("/");
  12.                         //判断是不是真分数
  13.                         if(check(str))
  14.                                 System.out.println(line+"是简真分数");
  15.                         else
  16.                                 System.out.println(line+"不是最简真分数");
  17.                 }
  18.         }

  19.         private static boolean check(String[] str) {
  20.                 int x =Integer.parseInt(str[0]);
  21.                 int y =Integer.parseInt(str[1]);
  22.                 if(x>=y)
  23.                         return false;
  24.                 else{
  25.                         for(int i=2;i<=x;i++)
  26.                                 if(x%i==0&&y%i==0)
  27.                                         return false;
  28.                         return true;
  29.                 }
  30.         }
  31. }
复制代码






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2