Data_Structure/作業/unit1/binary-search-square-root.c

58 lines
1.3 KiB
C
Raw Normal View History

2025-01-20 21:25:33 +08:00
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main() {
int i;
double precision = 1e-10 , x;
printf("***<2A><><EFBFBD>Jx<4A><78>(x>0)<29>p<EFBFBD><EFBFBD><E2A5AD><EFBFBD><EFBFBD>***\n");
printf("\n<EFBFBD><EFBFBD><EFBFBD>Jx<EFBFBD><EFBFBD>=> ");
scanf("%lf",&x);
double mid , lower , upper;
if(x<0){
printf("<EFBFBD><EFBFBD><EFBFBD>~! X<>Ȥ<EFBFBD><C8A4><EFBFBD><1");
return 1;
}
if(x>1){
lower=0 , upper=x , i=0;
printf("\n<EFBFBD>ϥΤG<EFBFBD><EFBFBD><EFBFBD>j<EFBFBD>M<EFBFBD>k<EFBFBD>D<EFBFBD>ѹL<EFBFBD>{<7B>p<EFBFBD>U...\n");
printf("\n<EFBFBD><EFBFBD><EFBFBD>N\t<EFBFBD>϶<EFBFBD>\t\t\t\t<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
printf("-------+-------------------------------+-------------\n");
while (upper - lower > precision) {
mid = (lower + upper) / 2.0;
printf("#%d\t[%.10f,%.10f]\t<EFBFBD><EFBFBD>=%.10f\n",i+1,lower,upper,mid);
i++;
if (mid * mid > x) {
upper = mid;
} else {
lower = mid;
}
}
}
if(x<1){
lower=0 , upper=1 ,i=0;
printf("\n<EFBFBD>ϥΤG<EFBFBD><EFBFBD><EFBFBD>j<EFBFBD>M<EFBFBD>k<EFBFBD>D<EFBFBD>ѹL<EFBFBD>{<7B>p<EFBFBD>U...\n");
printf("\n<EFBFBD><EFBFBD><EFBFBD>N\t<EFBFBD>϶<EFBFBD>\t\t\t\t<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
printf("-------+-------------------------------+-------------\n");
while (upper - lower > precision) {
mid = (lower + upper) / 2.0;
printf("#%d\t[%.10f,%.10f]\t<EFBFBD><EFBFBD>=%.10f\n",i+1,lower,upper,mid);
i++;
if (mid * mid > x) {
upper = mid;
} else {
lower = mid;
}
}
}
printf("\n%f<><66><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڬ<EFBFBD>%.10f\n",x,mid);
printf("sqrt(%f)<29><><EFBFBD><EFBFBD><EFBFBD>G<EFBFBD><47>%.10f\n",x,sqrt(x));
return 0;
}