第一次作业
C语言实现的迭代乘法
int multiply(int a, int b){
int temp=0;
for(;b!=0;){
if(b&1==1){
temp+=a;
}
a<<=1;
b>>=1;
}
return temp;
}
证明命题1.1
已知 a ,b ,c ∈ Z \in \mathbb{Z} ∈Z :
-
如果 a ∣ b a|b a∣b, b ∣ c b|c b∣c,那么一定存在一个整数 k 1 k_{1} k1使得 b = k 1 ∗ a b=k_{1}*a b=k1∗a,同理,一定存在一个整数 k 2 k_{2} k2使得 c = k 2 ∗ b c=k{2}*b c=k2∗b,所以, c = k 1 ∗ k 2 ∗ a c=k_{1}*k_{2}*a c=k1∗k2∗a,且 k 1 k 2 k_{1}k_{2} k1k2为整数,所以 a ∣ c a|c a∣c。
-
如果 c ∣ a c|a c∣a, c ∣ b c|b c∣b,那么一定存在一个整数 k 1 k_{1} k1使得 a = k 1 ∗ c a=k_{1}*c a=k1∗c,同理,一定存在一个整数 k 2 k_{2} k2使得 b = k 2 ∗ c b=k{2}*c b=k2∗c,对任意 m, n ∈ Z \in \mathbb{Z} ∈Z,有:
m a + n b = m ∗ k 1 ∗ c + n ∗ k 2 ∗ c = ( m k 1 + n k 2 ) ∗ c ma+nb = m*k_{1}*c+n*k_{2}*c=(m k_{1}+n k_{2})*c ma+nb=m∗k1∗c+n∗k2∗c=(mk1+nk2)∗c
所以 c ∣ ( m a + n b ) c|(ma+nb) c∣(ma+nb)。
定理1.1的证明
-
假设存在整数对 q 1 q_{1} q1, r 1 r_{1} r1,使得 a = q b + r a=qb+r a=qb+r 且 q 1 ≠ q , r 1 ≠ r q_{1} \neq q, r_{1} \neq r q1=q,r1=r ,构造集合 S 1 = { a − b q : q ∈ Z 且 a − b q ≥ 0 } S_{1}=\{{a-bq:q \in\mathbb{Z}}\ 且 \ a-bq\ge0\} S1={a−bq:q∈Z 且 a−bq≥0}:
-
由良序原则,存在一个最小元 r ∈ S r \in S r∈S,且 r = a − b q r=a-bq r=a−bq,又 r 1 ∈ S r_{1}\in S r1∈S 并且 r 1 r_{1} r1 ≠ \neq = r,所以 r 1 r_{1} r1 ≥ \ge ≥ b+r, 又定理1.1要求满足0 ≤ \leq ≤ r 1 r_{1} r1 < b 两者矛盾,因此,不存在整数 q 1 q_{1} q1 ≠ \neq = q, r 1 r_{1} r1 ≠ \neq = r ,使得 a = q b + r a=qb+r a=qb+r ,唯一性得证。