求含有n个因子的最小正整数(n<=1000000)
Posted Frank__Chen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求含有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)。
这题可以先打表。
代码如下:
1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 7 const int maxn=1e6+5; 8 int t,n; 9 int min_num[maxn],cnt[maxn]; 10 int main(){ 11 memset(min_num,-1,sizeof(min_num)); 12 for(int i=1;i<maxn;i++) 13 for(int j=i;j<maxn;j+=i) 14 cnt[j]++; 15 for(int i=1;i<maxn;i++) 16 if(min_num[cnt[i]]==-1) 17 min_num[cnt[i]]=i; 18 scanf("%d",&t); 19 while(t--){ 20 scanf("%d",&n); 21 printf("%d\n",min_num[n]); 22 } 23 return 0; 24 }
以上是关于求含有n个因子的最小正整数(n<=1000000)的主要内容,如果未能解决你的问题,请参考以下文章