首页 热点资讯 义务教育 高等教育 出国留学 考研考公

java算法题。小菜鸟的大问题。面试题。

发布网友 发布时间:2022-04-21 17:58

我来回答

5个回答

热心网友 时间:2023-10-23 08:47

帮你写出来了:用 欧几里得最大公约数 算法,然后判断:

如果分子 >= 分母或者 * 结果 b 值不是 1 就不是最简真分数,否则就是。

我这个用正则表达式先判断输入格式了。

---------------------------------------------------------------

import java.util.regex.Pattern;

import java.io.*;

public class Demo {

        public static void main (String args[]) throws IOException {

                Pattern regex = Pattern.compile("[0-9]*/[0-9]*");

                BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

                String num = "";

                while (!(num = br.readLine()).equals("-1")) {

                        if (!regex.matcher(num).matches()) {

                                System.out.println("格式不正确,请重新输入!");

                                continue;

                        }

                        int a = Integer.parseInt(num.substring(0, num.indexOf('/')));

                        int b = Integer.parseInt(num.substring(num.indexOf('/')+1));

                        if (a >= b || !isRelativelyPrime(a, b))

                                System.out.println(num + "不是最简真分数");

                        else

                                System.out.println(num + "是最简真分数");

                }

        }

        private static boolean isRelativelyPrime (int a, int b) {

                int tmp = 0;

                while (a > 0) {

                        tmp = b % a;

                        b = a;

                        a = tmp;

                }

                if (b == 1)

                        return true;

                else

                        return false;

        }

}

----------------------------- 运行结果 -------------------------------

热心网友 时间:2023-10-23 08:48

while(输入!=-1)
首先得到一个分数吧
用Pattern正则匹配得到或者split按分数之间的逗号切割得到分数数组都行
然后判断分子是否小于分母,满足则继续,否则返回flase
然后for(int i=2;i<=分子;i++)
if(分子%i==0&&分母%i==0) return false;
如果for结束没返回,则return true;
然后继续下一个分数

热心网友 时间:2023-10-23 08:48

import java.util.Scanner;

public class Test {

public static void main(String[] args) {
String num;
int num1;
int num2;
int index;
int temp;
Scanner sc=new Scanner(System.in);
System.out.println("input your num");
num=sc.nextLine();
//System.out.println(num);
index=num.indexOf('/');
//System.out.println(index);
num2=Integer.parseInt(num.substring(0, index));//que fenzi
num1=Integer.parseInt(num.substring(index+1));
System.out.println(num1+ "-" + num2);
if(num1>num2){
while(num2!=0){
temp=num1%num2;
num1=num2;
num2=temp;
}
if(num1==1){
System.out.println("it's ture");
}else{
System.out.println("it's false");
}
}else{
System.out.println("it's false");
}
}
}

热心网友 时间:2023-10-23 08:49

我是真菜鸟··晒下解题思路!·这里条件有限··不能测试··
要满足的条件:
首先分子小于分母(最好添上分子分母都不为0)
然后让分子或分母分别去循环除以2,3,5,7!然后判断分子和分母是不是有相同的能被整除的数字!比如分子是8,可以被2整除!分母是10也可以被2整除!类似这样的情况就不是最简真分数!
比较方式:创建二个int[]数组。
分子分别除以除以2,3,5,7后遇到没有余数的情况就把对应的除数存进一号数组
分母同上,存进2号数组!
让1号数组和2号数组的成员进行比较,如果有相同的数字,就说明还能约分,不是最简真分数!
(·只是设想···仅供参考·)

热心网友 时间:2023-10-23 08:49

package fxw.xjtu.e;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Game {
private static String getOut(int fenzi,int fenmu,String fenshu){
String yes = fenshu+"是最简分数";
String no = fenshu+"不是最简分数";

if(fenzi<fenmu){
while (fenzi != fenmu)
{
if (fenzi > fenmu){
fenzi -= fenmu;
}else{
fenmu -= fenzi;
}
}
if(fenzi==1){
return yes;
}else{
return no;
}
}
return no;
}

public static void main(String[] args) {
BufferedReader cin = new BufferedReader( new InputStreamReader( System.in ) );
try {
String s = cin.readLine();
while(!s.equals("-1")){
while(!s.matches("\\d*/\\d*")){
s = cin.readLine();
}
String[] in = s.split("/");
int fenzi = Integer.valueOf(in[0]).intValue();
int fenmu = Integer.valueOf(in[1]).intValue();
System.out.println(getOut(fenzi,fenmu,s));
s = cin.readLine();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
测试结果是:
11/11
11/11不是最简分数
11/10
11/10不是最简分数
11/22
11/22不是最简分数
11/13
11/13是最简分数
-1

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com