关于二分法开根

二分法开方的基本方式:

代码如下

#include<iostream>
using namespace std;

double Sqrt(int n){
	int i=0;
	for(i=1;i<=1000;i++){
		if(i*i<=n && (i+1)*(i+1)>=n){
			//n介于i^2和(i+1)^2之间,因此sqrt(n)在i和i+1之间 
			break; 
		}
	}
	double low=i,high=i+1;//sqrt(n)的范围在low和high之间
	for(i=1;i<=1000;i++){
		//进行1000次二分计算 
		double mid=(low+high)/2;
		if(mid*mid>n)high=mid;
		else low=mid;
	} 
	return (low+high)/2;
}

int main(){
	int n;
	scanf("%d",&n);
	printf("%.10lf",Sqrt(n));
}

对于一些常见数字的开方值测试:

2
1.4142135624
--------------------------------
Process exited after 1.635 seconds with return value 0
请按任意键继续. . .

10
3.1622776602
--------------------------------
Process exited after 0.6287 seconds with return value 0
请按任意键继续. . .

posted @ 2022-03-19 13:25  计算机知识杂谈  阅读(119)  评论(0编辑  收藏  举报