迭代版本的简单乘法
#include<iostream>
#include"math.h"
using namespace std;
int multiply(int a, int b)
{
int sign=1;
if (a == 0 || b == 0)return 0;
if (a < 0 && b>0 || a > 0 && b < 0) {
sign = -1;
a = abs(a);
b = abs(b);
}
int m = 0;
int tem = b;
b = 0;
while ((b-1) != tem)
{
if (b == 0) {
b++;
}
else {
m = a + m;
b++;
}
}
return sign*m;
}
int main()
{
int x = -4;
int y = 7;
cout << x<<"x"<<y<<"="<<multiply(x, y);
return 0;
}
求证命题1.1:
设a,b,c ∈Z,如果a |b,b |c,则a |c。如果c |a,c |b,则对任意m,n ∈Z,有c |(ma + nb)。
证:设a,b,c ∈Z,如果a |b,b |c,则a |c。
因为
a
∣
b
,
b
∣
c
a|b\ ,\ b|c
a∣b , b∣c
所以
b
=
k
1
a
,
c
=
k
2
b
(
k
1
,
k
2
∈
Z
)
b=k_1 a\ ,\ c=k_2b\ (k_1 ,k_2\in Z)
b=k1a , c=k2b (k1,k2∈Z)
故
c
=
k
1
k
2
a
(
k
1
k
2
∈
Z
)
c=k_1 k_2a\ (k_1k_2\in Z)
c=k1k2a (k1k2∈Z)
a ∣ c a|c a∣c
证:如果c |a,c |b,则对任意m,n ∈Z,有c |(ma + nb)。
因为
c
∣
a
,
c
∣
b
c|a\ ,\ c|b
c∣a , c∣b
所以
a
=
k
1
c
,
b
=
k
2
c
(
k
1
,
k
2
∈
Z
)
a=k_1 c\ ,\ b=k_2c\ (k_1 ,k_2\in Z)
a=k1c , b=k2c (k1,k2∈Z)
所以
m
a
+
n
b
=
m
k
1
c
+
n
k
2
c
=
(
m
k
1
+
n
k
2
)
c
ma+nb=mk_1c+nk_2c=(mk_1+nk_2)c
ma+nb=mk1c+nk2c=(mk1+nk2)c
c ∣ ( m a + n b ) c|(ma+nb) c∣(ma+nb)
求证定理1.1:
对任意给定的整数a 和b,其中b > 0,存在唯一的整数对q(商)和r(余数)使得,a = qb + r且0 ≤r < b。
证明:
首先证明存在性,即存在这样的q,r且r<b
令
S
=
{
a
−
b
k
:
k
∈
Z
且
a
−
b
k
≥
0
}
令S=\{a-bk:k\in Z且a-bk\geq0\}
令S={a−bk:k∈Z且a−bk≥0}
若0∈S,即存在k=a/b使得a-bk=0∈S。
若0∉S,为使S非空,
当a>0时,存在k=0使得a-bk=a>0,即此时a-bk∈S
当a<0时,存在k=2a使得a-bk=a(1-2b)>0,即a-bk∈S
所以集合S非空,根据良序定理,S必然存在一个最小元素r=a-bq,即a=bq+r且r>=0。
然后证明r<b,使用反证法:
假设r>b
则a-b(q+1)=a-bq-b=r-b>0,即a-b(q+1)∈S
然而根据上述证明可知r=a-bq时S中的最小元素,而a-b(q+1)<a-bq与之矛盾,故假设不成立
所以r<b。
证明唯一性
假设存在r,r’,q,q’使得
a
=
b
d
+
r
,
0
≤
r
<
b
且
a
=
b
q
′
+
r
′
,
0
≤
r
′
<
b
a=bd+r,0\leq r<b 且 a=bq'+r',0\leq r'<b
a=bd+r,0≤r<b且a=bq′+r′,0≤r′<b
可得bq+r=bq’+r’即b(q-q’)=r’-r
不妨设r’>=r
则
b
∣
(
r
′
−
r
)
且
0
≤
r
′
−
r
≤
r
′
<
b
则b|(r'-r)且0\leq r'-r\leq r'<b
则b∣(r′−r)且0≤r′−r≤r′<b
上式只有当r’-r=0时成立
故r’=r,q’=q.