求含有n个因子的最小正整数(n<=1000000)

时间:2023-03-09 00:36:04
求含有n个因子的最小正整数(n<=1000000)

题目链接:https://ac.nowcoder.com/acm/contest/331/G

思路:

根据唯一分解定理,如果一个数n可以表示成

n=p1a1*p2a2*...*pkak (pi是第i个质数)

那么n的因数的个数为(a1+1)*(a2+1)*...*(ak+1)。

这题可以先打表。

代码如下:

 #include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std; const int maxn=1e6+;
int t,n;
int min_num[maxn],cnt[maxn];
int main(){
memset(min_num,-,sizeof(min_num));
for(int i=;i<maxn;i++)
for(int j=i;j<maxn;j+=i)
cnt[j]++;
for(int i=;i<maxn;i++)
if(min_num[cnt[i]]==-)
min_num[cnt[i]]=i;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
printf("%d\n",min_num[n]);
}
return ;
}