Data_Structure/作業/unit1/binary-search-square-root/main.c
2025-01-20 21:30:53 +08:00

53 lines
974 B
C

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main() {
int i;
double precision = 1e-10 , x;
printf("***輸入x值(x>0)計算平方根***\n");
printf("輸入x值=> ");
scanf("%lf",&x);
double mid , lower , upper;
if(x<0){
printf("錯誤! X值不能<1");
return 1;
}
if(x>1){
lower=0 , upper=x , i=0;
while (upper - lower > precision) {
mid = (lower + upper) / 2.0;
printf("#%d\t[%.10f,%.10f]\t解=%.10f\n",i+1,lower,upper,mid);
i++;
if (mid * mid > x) {
upper = mid;
} else {
lower = mid;
}
}
}
if(x<1){
lower=x , upper=1 ,i=0;
while (upper - lower > precision) {
mid = (lower + upper) / 2.0;
printf("#%d\t[%.10f,%.10f]\t解=%.10f\n",i+1,lower,upper,mid);
i++;
if (mid * mid > x) {
upper = mid;
} else {
lower = mid;
}
}
}
printf("%f的平方根為%.10f\n",x,mid);
printf("sqrt(%f)的結果為%.10f\n",x,sqrt(x));
return 0;
}