当前位置: 首页 > article >正文

漂亮数 (线性筛+前缀和)

登录—专业IT笔试面试备考平台_牛客网
 

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define endl '\n'

const int N=1e8+5;
int primes[N],cnt;
bool st[N];
int ans[N];
/*
//多余
bool divide(int n)
{
	int cnt=0;
	for(int i=2;i<=n/i;i++)
	{
		if(n%i==0)
		{
			while(n%i==0)
			{
				cnt++;
				if(cnt>2)return false;
				n/=i;
			}
		}
	}
	if(n)cnt++;
	if(cnt!=2)return false;
	else return true;
}
*/
void get_primes(int n)
{
	for(int i=2;i<=n;i++)
	{
		if(!st[i])
		{
			primes[cnt++]=i;
		}
		for(int j=0;primes[j]<=n/i;j++)
		{
			st[primes[j]*i]=true;
			//if(divide(primes[j]*i))ans[primes[j]*i]=1;
            //这里不需要一个一个判断,如果st[i]==0代表i就是原始素数
            //那么i*primes[j]就是两素数之积
			if(!st[i])ans[primes[j]*i]=1;
			if(i%primes[j]==0)break;
		}
	}
}

int main()
{
	get_primes(N-1);
	for(int i=1;i<=N-1;i++)ans[i]+=ans[i-1];
    //因为需要10^5次查找而且查找范围为10^8,所以为省时可以一次性查完所有
	int t;cin>>t;
	while(t--)
	{
		int l,r;cin>>l>>r;
		cout<<ans[r]-ans[l-1]<<endl;
	}
}


 


http://www.kler.cn/a/523538.html

相关文章:

  • Prompt提示词完整案例:让chatGPT成为“书单推荐”的高手
  • MyBatis 框架:简化 Java 数据持久化的利器
  • 2025春晚刘谦魔术揭秘魔术过程
  • 低代码产品表单渲染架构
  • Kotlin开发(六):Kotlin 数据类,密封类与枚举类
  • 准备知识——旋转机械的频率和振动基础
  • 【小白学AI系列】NLP 核心知识点(五)Transformer介绍
  • 99.19 金融难点通俗解释:营业总收入vs归母净利润vs扣非净利润
  • 新鲜速递:DeepSeek-R1开源大模型本地部署实战—Ollama + MaxKB 搭建RAG检索增强生成应用
  • 数论问题75
  • LeetCode题练习与总结:N 叉树的后序遍历--590
  • 2025年AI Agent(智能体)的发展机会
  • C语言连接Mysql
  • PCIe基础分享
  • TensorFlow实现逻辑回归模型
  • 本地部署 DeepSeek-R1 大模型指南:基于 Ollama 的完整流程
  • Cyber Security 101-Build Your Cyber Security Career-Security Principles(安全原则)
  • 软件工程-软件开发模型
  • RoboMaster- RDK X5能量机关实现案例(一)识别
  • .~C#循环结构
  • Vue学习四—— Home主体页面
  • 数据结构与算法分析:专题内容——人工智能中的寻路4之A*搜索(代码详解)
  • 智慧园区系统分类及其在提升企业管理效率中的创新应用探讨
  • 软件工程概论试题一
  • 服务器上安装Nginx详细步骤
  • Linux:一切皆文件