永发信息网

如何编程实现计算平方根(pascal)

答案:5  悬赏:70  手机版
解决时间 2021-02-27 16:47
  • 提问者网友:書生途
  • 2021-02-27 07:49
要求位数不小于10的20次方。
sorry,打错了,是说n次方根,而且运算数小于等于10的200次方!
最佳答案
  • 五星知识达人网友:舍身薄凉客
  • 2021-02-27 08:02
二分法+高精度

你首先要写个高精度加法的函数add(a,b)=a+b,高精度乘法的函数multiply(a,b)=a*b和高精度除以2的除法的函数divide2(a)=a/2

然后,求a的n次方根的函数extract(1,10^100,a,n)如下:
function extract(l,r,a:numtype;n:longint):numtype;
var
i:longint;
m,p:numtype;
begin
m:=divide2(add(l,r));
p:=1;
for i:=1 to n do p:=multiply(p,m);
if p<a then extract:=extract(m,r,a,n);
if p=a then extract:=m;
if p>a then extract:=extract(l,m,a,n);
end;

另外还得注意下高精度数的比较大小问题和精确度问题
全部回答
  • 1楼网友:往事隔山水
  • 2021-02-27 12:40
sqrt函数
  • 2楼网友:不如潦草
  • 2021-02-27 11:05
赞同二分法 再看看别人怎么说的。
  • 3楼网友:酒安江南
  • 2021-02-27 09:25
var i,j,k,n:longint; begin readln(n,k); for i:=1 to sqrt(n) do if i的n次方=k then writeln(i); end.
  • 4楼网友:低音帝王
  • 2021-02-27 09:02
模拟? 例如对10开方: 1*1=1<10 2*2=4<10 3*3=9<10 4*4=16>10 3.1*3.1=9.61<10 3.2*3.2=…… ……………… 这是我的思路,不知道时间要求是否可以达到……囧 问题联盟吧欢迎您!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯