「刷题」 关于线段上的整点个数
今天学长说了个结论是 $ num=gcd(x_1-x_2,y_1-y_2) $
现在我试着证明一下。
证明:
令 $ x=x_1-x_2 , y=y_1-y_2 $
令 $ d=gcd(x,y) $
$ x=pd , y=qd $
令直线上某一点为$ (a,h) $
由相似三角形可得:
$ \frac{a}{x} = \frac{h}{y} $
$ a=\frac{hx}{y}=\frac{hpd}{qd}=\frac{hp}{q} $
那么$ ans $也就是对于$ 1<=h<=y $来说,有多少个$ a $是整数了。
即:
$ ans=\sum \limits_{i=1}^y [q|ip] $
$ gcd(q,p)==1 $
$ ans=\sum \limits_{i=1}^y [q|i] $
$ =\sum \limits_{i=1}^{qd} [q|i] $
$ =\sum \limits_{i=1}^{d} $
$ =d $
$ =gcd(x,y) $
证毕。