CINTA作业一

迭代实现简单乘法

#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,不符题意,舍

综上所述,唯一性得证。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值