CINTA 作业一
迭代实现简单乘法
#include<iostream>
using namespace std;
int main()
{
int total,a,b;
cin>>a>>b;
while(b!=0){
if(b&1==1)total+=a;
b>>=1;
a<<=1;
}cout<<total;
}
命题1.1的证明
前提是a、b、c都为整数,因为b可以被a整除,则有一个整数x使得a∗x=b,而c被b整除,则有一个整数y使得b∗y=c,将两个式子整合在一起则为c=b∗y=a∗x∗y,整数相乘还是整数,则可证明a∣c。
已知c∣a,c∣b,则有a=x∗c,b=y∗c,其中x和y都是整数。这时c∣(ma+nb)则表示为m∗a+n∗b=(m∗x∗c+n∗y∗c)/c,结果得到m∗x+n∗y,仍是整数,故得证。
定理1.1的证明
定理1.1的证明我想用一个以b为长度单位的尺来证明。如果a刚好可以被b整除,则r=0满足定理。如果不能被整除,那么a一定落在这个以b为长度单位的尺子上的某处,并且是落在两个等距点中间。假设a应该落在qb和(q+1)b之间,但是这时取q-1,那么r=a-(q-1)b=a-qb+b,那么这时r>b,不满足定理。若是取q+1,则已经把a所在的位置覆盖了,这种情况r<0,不满足定理。故得证。