Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- const int N=1e6;
- int ara[1000010];
- int bara[1000010];
- void sieve()
- {
- ara[0]=1;
- ara[1]=1;
- int i,j,sz=sqrt(N);
- for(i=2; i<=sz; i++)
- {
- if(ara[i]==0)
- {
- for(j=i*2; j<=N; j+=i)
- {
- ara[j]=1;
- }
- }
- }
- }
- int main()
- {
- sieve();
- int n,sum=0,i,a;
- scanf("%d",&n);
- for(i=1;i<=n;i++)
- {
- scanf("%d",&a);
- if(ara[a]==0)
- {
- sum=sum+1;
- bara[i]=sum;
- //printf("%d\n",bara[i]);
- }
- else
- {
- bara[i]=sum;
- //printf("%d\n",bara[i]);
- }
- }
- int t,b,c,kase;
- scanf("%d",&t);
- while(t--)
- {
- scanf("%d",&kase);
- if(kase==1)
- { scanf("%d%d",&b,&c);
- printf("%d\n",bara[c]-bara[b-1]);
- }
- else
- {
- int pos,valu;
- scanf("%d%d",&pos,&valu);
- if(bara[pos]==bara[pos-1] && ara[valu]==0 )
- {
- for(i=pos;i<=n;i++)
- {
- bara[i]=bara[i]+1;
- }
- }
- else if( bara[pos]>bara[pos-1] && ara[valu]==1)
- {
- for(i=pos;i<=n;i++)
- {
- bara[i]=bara[i]-1;
- }
- }
- }
- }
- }
- -------------------------------------------------------------------------------------------------------------0--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement