迭代实现简单乘法
#include<iostream>
using namespace std;
int main() {
int a, b;
int total = 0;
cout << "请输入两个整数:" << endl;
cin >> a >> b;
while (b != 0)
{
if (b & 1 == 1)
{
total += a;
}
b >>= 1;
a <<= 1;
}
cout << "结果为:" << total << endl;
system("pause");
return 0;
}
证明:
因为a|b,b|c,所以可以设b=xa,c=yb,则c=xya,所以a|c得证
因为c|a,c|b,所以可以设a=xc,b=yc,则ma+nb=xmc+ync=(xm+yn)c,故c|(ma+mb)得证
构造集合S={a-bk:k∈Z,且a-bk≥0}
有良序原则,存在最小元r∈S,r=a-bq,即a=qb+r,其中q∈Z,0≤r<b。
存在性得证。
以下证明唯一性(用反证法)
假设有a=q1b+r1,a=q2b+r2
一共三种情况:
①q1≠q2,r1=r2
有a=q1b+r1=q2b+r2=q2b+r1
即q1b=q2b,而b>0,得q1=q2,不符题意,舍
② q1= q2,r1 ≠r2
有 a=q1b+r1=q2b+r2=q1b+r2
即r1=r2,不符题意,舍
③q1 ≠ q2,r1 ≠r2
有r1>r2或者r2>r1,情况一致,以下假设r1 > r2
则必定有r1>b≥0,不符题意,舍
综上所述,唯一性得证。