HDU 1695 GCD (容斥原理+質因數分解)
先進行預處理,對每一個數分解質因數。
然後將因為若gcd(x,y)==z,那麼gcd(x/z,y/z)==1,又因為不是z的倍數的肯定不是,所以不是z的倍數的可以直接去掉,所以只要將b和d除以k,然後就轉化成了求兩個范圍中互質的對數了。這時候可以枚舉1~b,然後用容斥原理找1~d范圍內的與枚舉數互質的數的個數,為了避免重復,只要再限定下大小關系就可以了,具體見代碼。
代碼如下:
#include
#include
#include
#include
#include
#include
#include