第1个回答 2008-11-05
public class result
{
public String addNumbers(int n)
{
String fenziresult;
int sumFenzi=0;
int fenmu=1;
int index=0;
//求分子
for(int i=1;i<=n;i++)
{
index++;
int data=1;
for(int j=1;j<=n;j++)
{
if(index==j)
{
continue;
}
else
{
data=data*j;
}
}
sumFenzi+=data;
}
//求分母
for(int i=1;i<=n;i++)
{
fenmu=fenmu*i;
}
fenziresult=Integer.toString(sumFenzi);
return fenziresult+"/"+fenmu;//返回分数结果
}
public static void main(String[] args)
{
result r=new result();
System.out.println(r.addNumbers(3));
}
}
我写的程序,已经试过了没问题,可以求出分数结果。本回答被提问者采纳
第2个回答 2008-11-05
//计算1/1+1/2+1/3....+1/n的结果
//我用递归写的~你可以考虑用其他方法写写看
//读入有个IOException我直接抛出了,你可可以CATCH一下
import javax.swing.JOptionPane;
public class a{
public static void main(String[] args) {
a q = new a();
int n=new Integer(JOptionPane.showInputDialog(null, "输入数的个数")).intValue(); //从输入读入一个数n
int y = q.m(n),x = q.zi(1,n,n)+y;;//如果是从1/2到1/N就去掉+y
for(int i=2;i<y;i++)
if(y%i==0&&x%i==0){
x=x/i;
y=y/i;
}
System.out.println(x+"/"+y);
}
public int zi(int x,int y,int z) {//求分子
if(z!=2)
return zi((y+x*(z-1)),y*(z-1),z-1);
else return x;
}
public int m(int n) {//求分母
if (n!=1)
return n*m(n-1);
else return 1;
}
}
第3个回答 2008-11-05
...我觉得你若已经知道分母了,那就等于是做完了
你可以用循环求出这个式子的值,然后求分子就相当于知道了除数和商求被除数..除数是你的整数分母,商是刚求的那个DOUBLE型的数..分子就是这俩的乘积。
结果是DOUBLE,需要进行向上或向下取整运算,因为你的分母已经是整数了,所以必然有个取整结果是分子..另一个是误差分子...
话说楼主...能把你的欧几里得大法发给我参看参看么..我压根就没听过这方法...谢谢谢谢谢谢谢谢
第4个回答 2008-11-05
import javax.swing.JOptionPane;
public class Answer
{
public static void main(String[] args)
{
int n=new Integer(JOptionPane.showInputDialog(null, "输入数的个数")).intValue();
Fraction sum=new Fraction(0,0,1);
for(int i=1;i<=n;i++)
sum.addTo(new Fraction(0,1,i));
JOptionPane.showMessageDialog(null, "Result: "+sum);
}
static class Fraction
{
private int int_,up,down;
public Fraction(int int_,int up,int down)
{
this.int_=int_;
this.up=up;
this.down=down;
}
public Fraction addTo(Fraction ano)
{
int_+=ano.int_;
up=up*ano.down+ano.up*down;
down=ano.down*down;
toSimple();
return this;
}
public void toSimple()
{
int_+=up/down;
up%=down;
int[] r={up,down};
while(r[0]!=0)
{
int t=r[1]%r[0];
r[1]=r[0];
r[0]=t;
}
up/=r[1];
down/=r[1];
}
public String toString()
{
return int_+" + "+up+"/"+down;
}
}
}