码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-02-01 14:53:08      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:turn   mes   etc   \n   row   lib   node   bsp   cstring   

题目链接: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)

标签:turn   mes   etc   \n   row   lib   node   bsp   cstring   

原文地址:https://www.cnblogs.com/FrankChen831X/p/10345719.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!