题目
思路
φ(x)=n 当指数均为1时n最小
证明:容斥原理
代码
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int maxn=1e9;
int ans=INT_MAX,n;
bool f;
map<int,bool> mp;
bool is_prime(int n){
if(n<=1) return false;
for(int i=2;i<=n/i;i++) if(n%i==0) return false;
return true;
}
void dfs(int i,int num,int x){
if(x>=ans) return;
if(num==1) { ans=min(ans,1ll*x);f=1;return; }
if(is_prime(num+1)) dfs(i+1,1,x*(num+1));
for(int j=2;j<=num/j;j++) if(num%j==0&&!mp[j]&&is_prime(j+1)) mp[j]=1,dfs(j,num/j,x*(j+1)),mp[j]=0;
}
signed main()
{
cin>>n;
dfs(1,n,1);
if(!f) cout<<-1;
else cout<<ans;
return 0;
}
end
完结撒花