需要为延迟时间计算编写的算法

ser*_*nay -1 c++ algorithm math signal-processing core-audio

假设我们有一个变量x(采样率),并且对于并行梳状滤波,将使4个延迟时间(在样本中)具有1:1.5的比率.在下面的示例中,梳状滤波器时间从30到45毫秒不等.x/1000 = a a*30 = i a*35 = j a*40 = k a*45 = n第一个数字i应向上舍入到最接近的整数.第二个数字j应该向上舍入到与i没有任何公因子的整数,并且k应该向上舍入为与i和j都没有任何公因子的整数,依此类推.所以我正在寻找一种算法,它将所有数字j,k和n四舍五入,与i没有公约数.

我们遇到的真正问题是没有找到一种简单的方法来找到两个数字的常见NONE除数,就像你google这个结果都是常见除数等的解释......如果有人能够解释这一点,那么剩下的就是小菜一碟了.

非常感谢你提前

Jim*_*hel 5

您可以简单地为每个素数计算下一个素数,这可能比尝试找到一些没有公因子的任意数字更快.我不知道x您的应用程序中的比例是多少,但如果它相当小,那么计算下一个素数三次几乎不需要时间.

在0到1,000,000之间只有78,500个素数.您可以轻松生成所有这些并将它们存储在表中.然后,给定一些值,二进制搜索将为您提供大于该值的下一个素数.因此,如果您从未期望a*45大于1,000,000,那么您可以非常快速地获得下一个数字.当然,存储素数会花费一点内存.

或者,您可以生成从0到*45之后的所有素数.这样做需要一点时间,但如果你不经常这样做,那可能是一个完全可以接受的解决方案.特别是如果您之后要进行的处理比计算几个素数要贵得多.

请参阅优化错误的信息以获取更多信息.