题目链接:
G - Non-Prime Factors
题目大意:给你一个数n,然后问你n的因子中非素数的个数。
具体思路:埃筛,把每一个数的因子直接算出来就好了。
AC代码:
1 #include<bits/stdc++.h>
2 using namespace std;
3 const int maxn = 2e6 + 100;
4 int vis[maxn];
5 int sto[maxn];
6 void init()
7 {
8 for(int i=2; i<maxn; i++)
9 {
10 if(vis[i])// 当为非素数的时候,当前的数的非素数因子个数++
11 sto[i]++;
12 for(int j=i*2; j<maxn; j+=i)
13 {
14 vis[j]=1;
15 if(vis[i])// 当i不是因子,当前的数2*j中一定含有i这个非素数因子
16 sto[j]++;
17 }
18 }
19 }
20 int main()
21 {
22 init();
23 int T;
24 scanf("%d",&T);
25 while(T--)
26 {
27 int n;
28 scanf("%d",&n);
29 printf("%d
",sto[n]+1);
30 }
31 return 0;
32 }