思路:
约数是成对出现的(平方数除外)
也就是说,一个数的第一小约数乘第一大约数相乘等于这个数,第二小约数乘第二大约数相乘也依然等于这个数!
因此,只要找出n的最小约数(1除外),再用n除以这个数,就能得到结果了!
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
long n;
cin>>n;
for(int i=2;i<=n;++i)
{
int flag=0;
for(int j=2;j<=sqrt(i);++j)
{
if(i%j==0)
{
flag=1;
break;
}
}
if(flag==0&&n%i==0)
{
cout<<n/i<<endl;
break;
}
}
return 0;
}