发布网友 发布时间: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