掲示板に書き込む前に必ず この ”注意書き”を お読み下さい.
|
<Number>: [00000A5B]
<Date>: 2021/07/17 06:48:01
<Title>:
<Name>: amanojaku@管理人
|
|
|
public class Main {
public static void main(String args[]) {
Fraction fraction = new Fraction(1254, 9861);
System.out.println(fraction);
System.out.println("cnt: "+fraction.cnt);
}
}
class Fraction { // 分数
int numerator; // 分子
int denominator; // 分母
int cnt;
public Fraction(int numerator, int denominator) {
Set(numerator, denominator);
}
public void Set(int numerator, int denominator) {
this.numerator = numerator;
this.denominator = denominator;
Reduce();
}
public void Reduce() { // 約分
if (numerator == 0) {
denominator = (denominator != 0) ? 1 : 0;
} else if (denominator == 0) {
numerator = (int) Math.signum(numerator);
} else {
int n, d, sign, a, b, r;
n = Math.abs(numerator);
d = Math.abs(denominator);
sign = (int) (Math.signum(numerator) * Math.signum(denominator));
a = Math.max(n, d);
b = Math.min(n, d);
cnt = 0;
while ((r = a % b) != 0) {
a = b;
b = r;
cnt++;
}
numerator = sign * n / b;
denominator = d / b;
}
}
@Override public String toString() {
String res;
res = null;
if (numerator == 0 & denominator == 0) {
res = "Uncalculated"; // 演算不能
} else if (numerator != 0 & denominator == 0) {
res = (numerator>0) ? "Infinity" : "-Infinity"; // ±無限大
} else if(Math.abs(numerator)<=1 & Math.abs(denominator)<=1) {
res = String.valueOf(numerator * denominator);
}else{
res = String.format(" %d / %d ", numerator, denominator);
}
return res;
}
}
|
|
|
|
|
SMT Version 8.022(+A) Release M6.
Author : amanojaku.