7-8 巴比伦法求平方根近似值(分数 10)
作者 蔡轲
单位 南昌航空大学
巴比伦法求n的近似值可以用以下公式:
nextGuess = (lastGuess+n/lastGuess)/2
程序初始运行时lastGuess可赋予一个最初的猜测值。当由公式求得的nextGuess和lastGuess相差较大时,把nextGuess的值赋给lastGuess,继续以上过程,直至nextGuess和lastGuess几乎相同,此时lastGuess或者nextGuess就是平方根的近似值。
本题要求:nextGuess和lastGuess的差值小于0.00001时认为两者几乎相同
输入格式:
1、两个浮点数,以空格分隔,第一个是n,第二个是lastGuess最初的猜测值。例如:2 1。
2、若输入的两个数中包含负数或者lastGuess初始输入为0,认定为非法输入
输出格式:
1、输出n的平方根近似值:lastGuess。例如:1.4142157
2、非法输入时输出:“Wrong Format”
输入样例:
在这里给出一组输入。例如:
2 1
输出样例:
在这里给出相应的输出。例如:
1.4142157
输入样例1:
在这里给出一组输入1。例如:
2 -1
输出样例:
在这里给出相应的输出。例如:
Wrong Format
我的代码如下:
import java.util.*;
public class Main{
public static void main(String args[]){
Scanner scanner=new Scanner(System.in);
float n=scanner.nextFloat();
float last=scanner.nextFloat();
//判断
if(n<0||last<=0){
System.out.printf("Wrong Format");
return;
}
float next=(last+n/last)/2;
while(Math.abs(next-last)>=0.00001){
last=next;
next=(last+n/last)/2;
}
System.out.print((float)last);
}
}