判断偶数的函数
bool is_even(int a) {
return (a & 1) == 0;
}
按位与是将两个数转化为二进制,若对应的位两数都为1,则结果中该位位1,否则该位为0.
此数如果与1进行按位与运算,奇数转化为二进制后最后一位肯定为1,其余为肯定为0,也就是十进制中的1
迭代版本的乘法
int multiply(int a, int b) {
if (b == 0) return 0;
if ((b & 1) == 0) return 2 * multiply(a, b / 2);
if ((b & 1) == 1) return 2 * multiply(a, b / 2) + a;
}
利用递归进行迭代版本的乘法,例如3*5,运算过程中将3分别×21,22,23,即3,6,12。再将5转化为二进制数101,然后进行3*1+6*0+12*1的运算,结果为15
整除性的证明
1.
∵ \because ∵a ∣ \mid ∣b b ∣ \mid ∣c
∴ \therefore ∴b= k 1 k_1 k1a c= k 2 k_2 k2b
∴ \therefore ∴c= k 1 k_1 k1 k 2 k_2 k2a
∴ \therefore ∴ ∃ \exists ∃ q ′ \prime ′= k 1 k_1 k1 k 2 k_2 k2 使得 c=q ′ \prime ′a
即a ∣ \mid ∣c
2.
∵ \because ∵c ∣ \mid ∣a c ∣ \mid ∣b
∴ \therefore ∴a= k 1 k_1 k1c b= k 2 k_2 k2c
∴ \therefore ∴(a+b)= k 1 k_1 k1c+ k 2 k_2 k2c
∴ \therefore ∴(ma+nb)=m k 1 k_1 k1c+n k 2 k_2 k2c=(m k 1 k_1 k1+n k 2 k_2 k2)c
即对 ∀ \forall ∀m,n,总 ∃ \exists ∃q=m k 1 k_1 k1+n k 2 k_2 k2,使得(ma+nb)=qc
∴ \therefore ∴c ∣ \mid ∣(ma+nb)