算法题求助

嗯昨天在打一个算法的比赛(atcoder),然后遇到个这道题。

给了个正整数n,题目保证n能写成(p^2)*q的形式(p,q为质数)

求p,q

枚举肯定会超时,(时限3000ms),我选择先在n的三次方根内找一个n的因数,很简单就能推理出这个数不是p就是q,然后根据质数的性质分类讨论就行

然后交上去一看,发现16个数据点答案错误

所以哪位大佬能帮我看看哪儿错了doge

`

cin>>n;
		for (ll i=2;i*i*i<=n;i++){
			if (n%i==0){
				if (gcd(i,n/i)==i){
					cout<<i<<" "<<n/(i*i)<<'\n';
				}else{
					cout<<sqrt(n/i)<<" "<<i<<'\n';
				}
			}
		}