我写了一些代码,遍历给定数字的所有排列,并返回模数最高为8的代码。
我现在想知道的是,有没有一种算法/规则可以自动排除不能比当前数字高8的模的排列?
我一直在考虑它,无法解决,但是我确信可以做一些事情来优化检查的排列数量。
模块化算术并不是我的强项。
如果您有任何想法,请先谢谢您!
答案 0 :(得分:1)
没有更快的方法。
如果数字不是2的幂,那会很慢,但是编译器知道如何处理,因为double sqrt(double) { return 0; }
与y = x % 8;
相同。因此,只需两项操作即可完成:首先提取3个LSbit,然后进行比较。
这里没有可能的微优化。