解决思路:由题意知:
n
=
p
1
p
2
\small n= p_1p_2
n=p1p2。 咦!!! 这不就是算术基本定理吗? 所以得出结论,
m
a
x
(
p
1
,
p
2
)
\small max(p_1,p_2)
max(p1,p2)就是所求的答案。 直接枚举小于
n
\small \sqrt n
n的因子,输出
n
\small n
n除以因子就好了。
AC代码
//优化#pragma GCC optimize(2)//C#include<string.h>#include<stdio.h>#include<stdlib.h>#include<math.h>//C++#include<unordered_map>#include<algorithm>#include<iostream>#include<istream>#include<iomanip>#include<climits>#include<cstdio>#include<string>#include<vector>#include<cmath>#include<queue>#include<stack>#include<map>#include<set>//宏定义#define N 1010#define DoIdo main//#define scanf scanf_s#define it set<ll>::iterator//定义+命名空间typedeflonglong ll;typedefunsignedlonglong ull;const ll mod =19260817;const ll INF =1e18;constint maxn =1e6+10;usingnamespace std;//全局变量//函数区
ll max(ll a, ll b){return a > b ? a : b;}
ll min(ll a, ll b){return a < b ? a : b;}//主函数intDoIdo(){
ios::sync_with_stdio(false);
cin.tie(NULL), cout.tie(NULL);
ll n;
cin >> n;for(int i =2; i * i <= n; i++){if(n % i ==0){
cout << n / i << endl;return0;}}return0;}//分割线---------------------------------QWQ/*
*/