C++ 给定整数的2-adic数
我正在阅读一节关于二进制递归Gcd算法的内容,其中给出了这个定义 让v_2(a)表示a的2-adic赋值,即a的二进制表示的最小符号位中连续零的数量,因此我试图找到v_2(a),这里是代码C++ 给定整数的2-adic数,c++,binary,C++,Binary,我正在阅读一节关于二进制递归Gcd算法的内容,其中给出了这个定义 让v_2(a)表示a的2-adic赋值,即a的二进制表示的最小符号位中连续零的数量,因此我试图找到v_2(a),这里是代码 #include <iostream> using namespace std; int main() { int total=0; int n,k; cout << "enter value n "; k=0; cin >> n;
#include <iostream>
using namespace std;
int main()
{
int total=0;
int n,k;
cout << "enter value n ";
k=0;
cin >> n;
while(k!=1)
{
if (k==1)
{
break;
}
k=n%2;
n>>=1;
total++;
}
cout<<total<<" "<<endl;
return 0;
}
#包括
使用名称空间std;
int main()
{
int-total=0;
int n,k;
cout>n;
while(k!=1)
{
如果(k==1)
{
打破
}
k=n%2;
n> >=1;
总计++;
}
cout因为当到达k==1
时,您正在运行total++
,所以您已经太晚了
在k=n%2;
行之后移动if(k==1)
块
注意:k
变量实际上不是必需的。您可以将循环简化为:
while((n%2)==0) {
n>>=1;
total++;
}
当到达k==1
时,您正在运行total++
,此时您就已经太晚了
在k=n%2;
行之后移动if(k==1)
块
注意:k
变量实际上不是必需的。您可以将循环简化为:
while((n%2)==0) {
n>>=1;
total++;
}