# 平方根
```
#include <stdio.h>
#include <math.h>
double sqrtNewton(double x) {
if (x==0) return x;
double dividend = x;
double val = x;
double last;
do {
last = val;
val = (val + dividend / val) * 0.5;
} while(abs(val - last) > 1e-9); // precision
return val;
}
int main() {
double n;
scanf("%lf", &n);
printf("Square root of %.3lf = %lf", n, sqrtNewton(n));
}
https://blog.csdn.net/beifangdetian/article/details/120373724
#include <stdio.h>
double sqrt(double n) {
double i, precision = 0.00001;
for(i = 1; i*i <=n; ++i); //Integer part
for(--i; i*i < n; i += precision); //Fractional part
return i;
}
int main() {
double n;
scanf("%lf", &n);
printf("Square root of %.3lf = %.5lf", n, sqrt(n));
}
https://www.yiibai.com/c_examples/square_root_program_in_c.html
//不用平方去計算
#include <stdio.h>
unsigned long sqrt1(double n) {
int i = 1;
unsigned long d = 3;
while (i <= n) {
i += d; // (i + 1)^2
d += 2;
}
return d / 2 - 1; //Integer part
}
double sqrt2(double n, double i) {
double precision = 0.00001;
double p = precision*precision;
double p1 = p*2, k = i*i, d = 2*i*precision;
int j=0;
while (k <= n) {
k += d + p;
p += p1;
j++;
}
return i + j*precision; //Fractional part
}
int main() {
double n;
scanf("%lf", &n);
double i = sqrt1(n); //Integer part
printf("Square root of %.3lf = %.5lf", n, sqrt2(n,i) );
}
```