发新帖我要提问
12
返回列表
打印
[应用方案]

开根号算法

[复制链接]
楼主: plsbackup
手机看帖
扫描二维码
随时随地手机跟帖
21
i1mcu| | 2025-1-21 22:38 | 只看该作者 回帖奖励 |倒序浏览
#include <stdio.h>

int sqrt_binary_search(int N) {
    int low = 0, high = N, mid;
    while (low <= high) {
        mid = low + (high - low) / 2;
        if (mid * mid == N) return mid;
        if (mid * mid < N) {
            low = mid + 1;
        } else {
            high = mid - 1;
        }
    }
    return high;  // 返回小于等于平方根的最大整数
}

int main() {
    int number = 25;
    int result = sqrt_binary_search(number);
    printf("The integer square root of %d is %d\n", number, result);
    return 0;
}

使用特权

评论回复
22
houjiakai| | 2025-1-21 22:59 | 只看该作者
现代处理器通常包含专门的浮点运算单元(FPU),这些单元能够高效地执行平方根等复杂数**算。确保编译器和代码设置能够充分利用这些硬件特性。

使用特权

评论回复
23
10299823| | 2025-1-23 12:04 | 只看该作者
double myApproxSqrt(double a) {
    int n = (int)sqrt(a);  // 先得到最接近的整数
    double x = (a - n * n) / (n * n);
    double result = n * (1 + x / 2 - x * x / 8 + x * x * x / 16);
    return result;
}

使用特权

评论回复
24
benjaminka| | 2025-1-23 14:51 | 只看该作者
如果是对一组固定的数频繁求开根号,可以预先计算这些数的平方根并存储在一个查找表中。在实际运行时,直接从表中获取结果,避免重复计算。不过这种方法需要占用一定的存储空间来存放查找表。

使用特权

评论回复
25
wangjiahao88| | 2025-1-23 15:45 | 只看该作者
一般场景使用DSP-LIB就可以了啊

使用特权

评论回复
26
V853| | 2025-1-23 20:54 | 只看该作者
如果您需要实现自己的平方根算法,二分搜索法方法是一种简单且相对高效的方法。

使用特权

评论回复
27
朝生| | 2025-1-24 07:23 | 只看该作者
原理是什么?我需要解释一下原理

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则