思路:

需要对埃氏筛法的时间复杂度有正确的认识(O(nlog(log(n)))),我都以为肯定超时了,结果能过。

实现:

 #include <bits/stdc++.h>
using namespace std; bool is_prime[];
vector<int> prime;
int num[], ans[];
void sieve(int n)
{
for (int i = ; i <= n; i++) is_prime[i] = true;
is_prime[] = is_prime[] = false;
for (int i = ; i <= n; i++)
{
if (is_prime[i])
{
prime.push_back(i);
for (int j = * i; j <= n; j += i) is_prime[j] = false;
}
}
}
int main()
{
sieve();
int n, m, x, a, b;
while (scanf("%d", &n) != EOF)
{
memset(num, , sizeof num);
memset(ans, , sizeof ans);
int l = prime.size();
for (int i = ; i < n; i++) { scanf("%d", &x); num[x]++; }
for (int i = ; i < l; i++) // 这段代码和素数筛法是一样的
{
int now = prime[i];
for (int j = now; j <= ; j += now)
{
if (num[j]) ans[now] += num[j];
}
}
for (int i = ; i <= ; i++) ans[i] += ans[i - ];
scanf("%d", &m);
for (int i = ; i < m; i++)
{
scanf("%d %d", &a, &b);
if (a > b) { puts(""); continue; }
a = min(a, ); b = min(b, );
printf("%d\n", ans[b] - ans[a - ]);
}
}
return ;
}

最新文章

  1. 分布式中使用Redis实现Session共享(二)
  2. jQuery中取消后续执行的内容
  3. Linux应用程序基础
  4. Linux磁盘空间监控告警
  5. 关于redis的keys命令的性能问题
  6. C# 程序实现功能目录
  7. putty连接报NetWork error:connection refused
  8. 第二章 git 工作区与reset,revert
  9. shell中一维数组值得获取
  10. 打印出1,11,21,31,41。。。。。。的shell脚本
  11. maven_Error building POM (may not be this project&#39;s POM)错误
  12. linux ptheard 生产者消费者
  13. NYoj 最舒适的路线
  14. 开箱即用 - jwt 无状态分布式授权
  15. Dijkstra堆优化学习
  16. flutter -webview 报错 err_cleartext_not_permitted
  17. 修复因为存储空间问题引起的nexus 服务启动异常
  18. Oracle SQL调优记录
  19. EF(EntityFramework)与mysql使用,取数据报错,linq实体映射错误
  20. JWT实战

热门文章

  1. for、while循环(java基础知识四)
  2. 一步一步学Silverlight 2系列(7):全屏模式支持
  3. Redmine 数据库连接错误
  4. 【转】创建和使用ANDROID LIBRARY工程
  5. The IBM Blockchain Platform:Installing the development environment
  6. codforces 1C Ancient Berland Circus(几何)
  7. P5112 FZOUTSY
  8. React的深入浅出
  9. C#语言开发规范-ching版
  10. C# 中使用Image.FromFile(string path)后,提示该文件正在被另一进程使用XXX的问题