在C++中给出以下代码:
$$ k = 2 ^ a \ cdot b,$$
只知道k的值而b是奇数。您如何找到a的值和b的值?
我确实考虑过以下几点:
我的问题:如何检查log2(k / b)是否给我返回整数?
C++代码:
Big k(9);
int r = 4;
int n = pow(2,r);
if (k % 2 == 1)
{
a = 0;
b = k;
}
else
{
for (int b = 1; b < n; b += 2)
{
if (k % b == 0 && LOGARITHM OF k / b IS POSSIBLE)
{
a = log2(b);
}
}
}
顺便说一句:n也给定。除了a和b以外的所有东西都给定了。
最佳答案
您可以执行以下操作:
int a = 0;
while (k % 2 == 0) {
++a;
k /= 2;
}
int b = k;
// you have a, b
最简单的方法是将
2**a*b
除以2,直到不再为偶数为止,因此您找到了b
。
关于c++ - C++:如何从k = 2 ^ a * b中找到a和b?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62309283/