# 平方根 ``` #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) ); } ```