C++ 需要为延迟时间计算编写算法吗

C++ 需要为延迟时间计算编写算法吗,c++,algorithm,math,signal-processing,core-audio,C++,Algorithm,Math,Signal Processing,Core Audio,假设我们有一个可变的x采样率,并将在并行梳状滤波的比率为1:1.5的样本中进行4次延迟。在下面的示例中,梳状滤波器的时间从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没有公约数 真正的问题是我们没有找到一个简单的方法来找到两个数字的无公

假设我们有一个可变的x采样率,并将在并行梳状滤波的比率为1:1.5的样本中进行4次延迟。在下面的示例中,梳状滤波器的时间从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没有公约数

真正的问题是我们没有找到一个简单的方法来找到两个数字的无公约数,因为当你用谷歌搜索时,这些结果都是对公约数的解释等等。。。如果有人能解释这一点,其余的都是小菜一碟


提前非常感谢

您可以简单地计算每个素数的下一个素数,这可能比尝试查找没有公因数的任意数要快。我不知道你的应用程序中的x是什么,但如果它相当小,那么计算下一个质数三次几乎不需要时间

在0和1000000之间只有78500个素数。您可以轻松地生成所有这些数据并将它们存储在表中。然后,给定某个值,二进制搜索将给出下一个大于该值的素数。因此,如果你从未期望*45大于1000000,你可以有一个非常快速的方法来获得下一个数字。诚然,存储素数需要一些内存

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


有关更多信息,请参阅。

无论是谁否决了这一点,请解释为什么我认为这些数字足够小,分解它们并不困难。因此,定义两个数的最大公约数并不困难。所以你可以增加j,直到它和i没有公因子,然后增加k,直到它和i或j没有公因子,依此类推。有什么问题吗?因为你要求我们写一个算法,自己动手做是不费吹灰之力的。很抱歉,我问一个音频工程师朋友这个问题,他很努力,如果你读了它,他会要求帮助解决算法中两个数的无除数部分,而不是整个问题,所以在我看来,这是一个有点苛刻的评论