gpt4 book ai didi

c - 优化乘法和加法

转载 作者:太空狗 更新时间:2023-10-29 16:52:26 26 4
gpt4 key购买 nike

我正在使用 C,我有两个非负整数 n 和 m(均 >= 0,n < 500)。我需要形成产品

n*(n+1)/2 + m

这将被需要数亿次,所以我想尽可能地优化它。我当前的实现是:

inline int func(const int n, const int m) { return ( (n*(n+1) >> 1) + m); }

使用 inline>> 1 进行除以 2。是否有任何其他方法可以加速此计算?

最佳答案

鉴于 n 将小于 500,您可以预先计算 n*(n+1)/2 的所有可能值并将它们放入表中,然后使用该表执行计算:

int n_sum[500];

// call this once at program start
void init_sum()
{
int i;
for (i=0;i<500;i++) {
n_sum[i] = i*(i+1)/2;
}
}

inline int func(const int n, const int m)
{
return n_sum[n] + m;
}

关于c - 优化乘法和加法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57720147/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com