请教一个算法,要求时间越少越好,谢谢!

queena 2003-10-18 11:10:24
派:3.1415926.....
简写为P;
现在:
P=4-4/3+4/5-4/7+4/9......(其中每一个都称为元素)
现在要给一个界定:
如输入3.141
那么找出需要多少个元素才能让最接近3.141.

...全文
60 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
queena 2003-10-20
  • 打赏
  • 举报
回复
//Text516用于计算PI要用几个位完成
import javax.swing.JOptionPane;
import javax.swing.JTextArea;
import javax.swing.*;
//自定义类用于计算
class Caculate{
double Number=0,temp2=0;int i=0,t=0,s=0,u=0;double result=0, temp1=0;

Caculate(double temp,double temps){
Number=temp;

temp2 =temps;
}

double Caculation(){
result=0;int s;
for(i=1;;i++){
temp1=Math.pow((-1),i+1);
t=2*i-1;
result=result+(4*temp1)/t;
if((int)(Math.PI*Math.pow(10,i)-result*Math.pow(10,i))==0)
{ s=i;
break;
}
}
return(s);
}
}
public class Pi{
public static void main(String args[]){
JTextArea outputArea =new JTextArea(17,30);
JScrollPane scroller = new JScrollPane(outputArea);//开辟窗口对话框
double Result;
String Temp_num,temp_result="",temp_1="";
int j;double getNumber, m;
Temp_num=
JOptionPane.showInputDialog("please enter your choose Pi :");
getNumber=Double.parseDouble(Temp_num);//从屏幕中得到近似PI的值并转化为整数
m=(getNumber-(int)getNumber);
System.out.println(m);//用于测试是否成功
Caculate c= new Caculate(getNumber,m);//建立新类用于计算
temp_1=" "+c.Caculation()+"\n";
temp_result=temp_result+temp_1;
outputArea.setText(temp_result);
JOptionPane.showMessageDialog(null,scroller,
"The result",JOptionPane.INFORMATION_MESSAGE);
System.exit(0);
}

}
有点小问题谁能看看
queena 2003-10-19
  • 打赏
  • 举报
回复
谢谢了
cupidvenus 2003-10-19
  • 打赏
  • 举报
回复
64是用高等数学算出来的。Tailor定理。
swinging 2003-10-18
  • 打赏
  • 举报
回复
大概和 无穷级数 有关吧。(我猜的)
swinging 2003-10-18
  • 打赏
  • 举报
回复
这个好像是高等数学解决的问题。
去翻一本高等数学书,里面可能有解决的算法。
我早忘了。
huangry 2003-10-18
  • 打赏
  • 举报
回复
关于pi的好像除了全部算一下没什么更好的方法
queena 2003-10-18
  • 打赏
  • 举报
回复
请教一下
如果用a(n)=-4*((-1)^n)*(1/(-1+2*n))
S(n)=a(1)+a(2)+a(3)+...+a(n)
那么必须遍历所要的足够大的值.
即必须从S1----Sn才能计算出
有没有什么好的能减少步骤呢??
cupidvenus 2003-10-18
  • 打赏
  • 举报
回复
64个
pleonheart 2003-10-18
  • 打赏
  • 举报
回复
高数...好遥远哦
imagex 2003-10-18
  • 打赏
  • 举报
回复
a(n)=-4*((-1)^n)*(1/(-1+2*n))
S(n)=a(1)+a(2)+a(3)+...+a(n)

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧