蒟蒻求助
  • 板块灌水区
  • 楼主Zerodreams
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/8/6 18:55
  • 上次更新2024/8/6 20:03:28
查看原帖
蒟蒻求助
1247445
Zerodreams楼主2024/8/6 18:55

题目描述

蒜头君有一个长度为 n 的数列,第i 个数为ai 。花椰妹最近对质数很感兴趣,所以花椰妹向蒜头君提出了 Q 个问题,对于每个问题,花椰妹想知道蒜头君的这个数列中区间[l,r] 中质数的个数。 质数是指在大于1 的自然数中,除了1 和它本身以外不再有其他因数的自然数,例如 1,2,...,3,5,7,11,....。

本来以为就是一道简单的函数题结果第二各样里给我整蒙了,感觉自己连题都没看懂。

input 2

10

2 43 45 4 234 54 65 11 79 57

5

2 4

3 8

5 10

1 3

1 10

output 2

1

1

2

2

4

样例解释2 区间 [2,4] 中共有 1 个质数,分别为:{43};

区间 [3,8] 中共有 1 个质数,分别为:{11};

区间 [5,10] 中共有 2 个质数,分别为:{11,79};

区间 [1,3]中共有 2 个质数,分别为:{2,43};

区间 [1,10]中共有 4 个质数,分别为:{2,43,11,79};

code:

#include<bits/stdc++.h>
using namespace std;
long long n,a[100010],l,r,m,sum=0;
bool zhishu(int x){
	if(x==1) return 1;
	for(int i=2;i<=sqrt(x);i++){
		if(x%i==0) return 1;
	}
	return 0;
}
int main(){
	freopen("prime.in","r",stdin);
	freopen("prime.out","w",stdout);
	scanf("%lld",&n);
	for(int i=1;i<=n;i++){
		scanf("%lld",&a[i]);
	}
	scanf("%lld",&m);
	for(int i=1;i<=m;i++){
		scanf("%lld%lld",&l,&r);
		for(int j=l;j<=r;j++){
			if(zhishu(j)==0) sum++;
		}
		printf("%lld\n",sum);
		sum=0;
	}
	return 0;
}

在线求助急!!!

2024/8/6 18:55
加载中...