G - Non-Prime Factors Kattis - nonprimefactors (筛1-n内的当前数中非素数的个数)

题目链接:

G - Non-Prime Factors

 Kattis - nonprimefactors 

题目大意:给你一个数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\n",sto[n]+1);
30     }
31     return 0;
32 }

 

posted @ 2019-05-03 21:26  Let_Life_Stop  阅读(308)  评论(0编辑  收藏  举报