塔子哥拿到一个整数x,并希望通过如下两个操作将x变为完全平方数。
由于x不超过109,所以,如果其为一个完全平方数,则x≤109。同样的,当x不是素数时,其最小因子也不会超过109。
反证:假设其最小因子p>109,则有p′=x/p<109。矛盾。
所以我们需要筛出109以内的素数,如果x是合数,则在筛出的素数中找最小素因子。如果x是素数,那么其要么就在筛出的素数里面,要么就是可以通过N的计算来判断其是否是素数。
假设一个数所有因子均为2,有230>109,操作一的次数和操作二的次数最多一样,而操作二不会超过30次,所以不会超时。