老规矩,先放原题
这题问小于n的数中有几个数的最大因数是d。有T \le 10^6组数据,并且2 \le d
首先,枚举所有小于n的整数明显是不可取的,不说判断因数的复杂度是\sqrt n,单是n \le 10^9就够我喝一壶了。
想一想,d是因数,这样的数x一定能表示成x=k \cdot d的形式,那么,我们可以枚举所有k
但是,还有一招,如果k是个合数,必有k=a \cdot b,a>1,b>1那么,x= k \cdot d =a \cdot b \cdot d,而a \cdot d > d。这说明,k是素数,题目可以等价为满足k