利用Rational类求1/2+2/3+3/4+......+99/100的和
Rational:
public class Rational{
private long numerator;
private long denominator;
public Rational(){
this(0,1);
}
public Rational(long numerator,long denominator){
long gcd=gcd(numerator,denominator);
this.numerator=((denominator>0)? 1:-1)*numerator/gcd;
this.denominator=Math.abs(denominator)/gcd;
}
public long gcd(long n,long d){
long n1=Math.abs(n);
long n2=Math.abs(d);
int gcd=1;
for(int k=1;k<=n1&&k<=n2;k++){
if(n1%k==0&&n2%k==0)
gcd=k;
}
return gcd;
}
public long getNumerator(){
return numerator;
}
public long getDenominator(){
return denominator;
}
public Rational add(Rational secondRational){
long n=numerator*secondRational.getDenominator()+denominator*secondRational.getNumerator();
long d=denominator*secondRational.getDenominator();
return new Rational(n,d);
}
public String toString(){
if(denominator==1)
return numerator+"";
else
return numerator+"/"+denominator;
}
}
Rational:
public class Rational{
private long numerator;
private long denominator;
public Rational(){
this(0,1);
}
public Rational(long numerator,long denominator){
long gcd=gcd(numerator,denominator);
this.numerator=((denominator>0)? 1:-1)*numerator/gcd;
this.denominator=Math.abs(denominator)/gcd;
}
public long gcd(long n,long d){
long n1=Math.abs(n);
long n2=Math.abs(d);
int gcd=1;
for(int k=1;k<=n1&&k<=n2;k++){
if(n1%k==0&&n2%k==0)
gcd=k;
}
return gcd;
}
public long getNumerator(){
return numerator;
}
public long getDenominator(){
return denominator;
}
public Rational add(Rational secondRational){
long n=numerator*secondRational.getDenominator()+denominator*secondRational.getNumerator();
long d=denominator*secondRational.getDenominator();
return new Rational(n,d);
}
public String toString(){
if(denominator==1)
return numerator+"";
else
return numerator+"/"+denominator;
}
}
{
public static void main(String [] args)
{
int m=1,n=2, sum=0,t,j=2;
while(j<=100)
{
t=m/j; //定义了一个分数
sum+=t; //求和
j=n+1; //实现分母自加
n=j; //把自加1后的值赋给分母
m=n; //自加前的值赋给分子
}
System.out.println(sum);
}
}
Double sum=0.0;
Double temp=1.0;
while(temp<=99){
sum+=(temp/(temp+1));
temp++;
}
System.out.println(sum);
temp 用int 类就好啦
System.out.println(test(10));
} public static double test(double i) {
if (i == 1)
return (double) 1 / 2;
return test(i - 1) + i / (i + 1);
}
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
testCsdn();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void testCsdn() throws Exception {
float sum=0.0f;
for (int i = 1; i <100; i++) {
String str=(i==99?"=":"+");
sum +=(float)i/(i+1);
System.out.print(i+"/"+(i+1)+str);
}
System.out.println(sum);
}}
public class Test { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
int num =input.nextInt(); //num表示输入的最大的分母。
float a,b,result; //单项里面,a是分子,b是分母,result表示输出结果
a = 0;
b = 0;
result = 0;
for(int i=1; i<num; i++) {
a = i;
b = i + 1;
result += ( a / b );
}
System.out.println(result);
}}
hava a good lunch !