AcWing 1292. 哥德巴赫猜想 线性筛+二分查找

2023-10-31


线性筛代码:

const int N=1e6+10;
int pri[N],v[N],pri2[N];
int cnt;
void Getpri()//线性筛 
{
	mem(v,0);
	cnt=0;
	for(int i=2;i<=1e6;i++)
	{
		if(v[i]==0)//没被筛到说明是质数 
		{
			v[i]=i;
			pri[cnt++]=i;
		}
		for(int j=0;j<cnt;j++)
		{
			if(pri[j]>v[i]||pri[j]>1e6/i) break;
			v[i*pri[j]]=pri[j];
		}
	}
}

总代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
#define pb push_back
#define fi first
#define se second
#define mem(a,x) memset(a,x,sizeof(a));
#define db double 
#define fir(i,a,n) for(int i=a;i<=n;i++)
#define debug(x) cout<<#x<<" "<<x<<endl;
const int inf=0x3f3f3f3f;
const int MOD=1e9+7;
//重点是线性筛======================
const int N=1e6+10;
int pri[N],v[N],pri2[N];
int cnt;
void Getpri()//线性筛 
{
	mem(v,0);
	cnt=0;
	for(int i=2;i<=1e6;i++)
	{
		if(v[i]==0)//没被筛到说明是质数 
		{
			v[i]=i;
			pri[cnt++]=i;
		}
		for(int j=0;j<cnt;j++)
		{
			if(pri[j]>v[i]||pri[j]>1e6/i) break;
			v[i*pri[j]]=pri[j];
		}
	}
}
int main()
{
	int n;
	Getpri();
	sort(pri,pri+cnt); 
//	memcpy(pri2,pri,sizeof(pri));
//	sort(pri2,pri2+cnt,cmp);
	while(cin>>n&&n)
	{
		cout<<n<<" = ";
		int t=n-3;
		int t1=lower_bound(pri,pri+cnt,t)-pri;
		int t2=1;
		while(t1>t2)
		{
			if(pri[t1]+pri[t2]==n) break;
			
			else if(pri[t1]+pri[t2]<n) t2++;
			else t1--;
		}
		cout<<pri[t2]<<" + "<<pri[t1]<<endl;
	}
	return 0; 
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AcWing 1292. 哥德巴赫猜想 线性筛+二分查找 的相关文章

随机推荐

  • 高并发请求批量提交

    作用 将数据库操作请求 放入队列中 待定时任务执行时 批量执行数据库操作 以减轻数据库压力 package com zy data sync common scheduled import com zy data sync moudles
  • 【Python】经典问题创建一个矩形类,定义方法 属性 初始化

    Hello 大家好 我是乔乔白术 今天还是处理一些我们的习题 定义一个矩形类Rectangle a 定义三个方法 get area 求面积 get per 求周长 show all 输出长 宽 面积 周 长 b 有2个属性 长length
  • linux查看磁盘空间命令

    版权声明 本文为博主原创文章 遵循 CC 4 0 BY SA 版权协议 转载请附上原文出处链接和本声明 本文链接 https blog csdn net zhaohong bo article details 89944350
  • 简单并查集算法模板

    并查集 简单并查集 基本思想 采用双亲表示法 顺序存储 课本做法 初始化数组的值为 1 若是合并就让一个树的根的数组值指向另一个根的下标 查根节点 若是查询就一直到数组值小于0的时候终止 时间复杂度为O n 优化 查的过程 并且观察到时间复
  • 架构修炼11-互联网分布式请求跟踪系统理论与实践

    一 背景 1 微服务的现状 2 微服务架构带来的问题 a 某个核心服务挂了 导致上游出现大量报警 如何快速确定哪个服务出了问题 b 某个核心服务挂了 导致大量报错 如何快速确定哪里出了问题 c 应用程序有性能瓶颈 怎样确定瓶颈在哪里 d A
  • cubemx配置can和收发代码

    can的使用 cubemx配置 中断 can h ifndef can H define can H ifdef cplusplus extern C endif Includes include main h USER CODE BEGI
  • cnpm的安装教程

    新电脑或者重装系统的电脑下载nodejs后 电脑只能执行npm命令 无法执行cnpm命令 此时就需要按照一下cnpm 打开cmd执行如下命令 npm install g cnpm registry https registry npm ta
  • 详情小三角css,3. 小三角及原理

    要点 用纯CSS创建一个三角形的原理是什么 把上 左 右三条边隐藏掉 颜色设为 transparent demo width 0 height 0 border width 20px border style solid border co
  • 【ML&DL】【skimming】ACNet: Strengthening the Kernel Skeletons for Powerful CNN

    略读2019 ICCV的ACNet Strengthening the Kernel Skeletons for Powerful CNN via Asymmetric Convolution Blocks 1 文章将普通的方形核卷积分解成
  • 202327读书笔记

    202327读书笔记 穆夏画集 少女的诗篇 超级赞的一本画集 久远的年代 就有这么棒的创意和广告画了 穆夏画集 少女的诗篇 作者阿尔丰斯 穆夏 很棒的一本画集 对于那么久远的年代 就有这么棒的创意和广告画了 我是有些诧异的 前段时间看了 长
  • 第四章——串的模式匹配

    串的模式匹配 首先什么叫串的模式匹配 设有两个串s和t 要在串s中找到与t相等的子串 通常将s称为目标串 t称为模式串 这种串的定位查找也称为模式匹配 对于这个问题 常见的两种算法是BF算法和KMP算法 Brute Force 算法 Bru
  • Spring cloud多模块开发下Feign的使用,以及@FeignClient注入bean找不到异常解决

    一 关于Feign 在微服务架构开发是 我们常常会在一个项目中调用其他服务 其实使用Spring Cloud Ribbon就能实现这个需求 利用RestTemplate 的请求拦截来实现对依赖服务的接口调用 但是实际项目中对服务依赖的调用可
  • stm32f4_奇怪的bug_串口数据错乱,一个串口收到另一个串口的数据

    1 开发环境简介 芯片型号 stm32f407igt6 官方库函数 HAL库 2 bug现象描述和原因推测 使用了2个串口 一个是串口5 波特率115200 一个是串口4 波特率9600 但是串口4时不时会收到上一次发给串口5的数据 不是同
  • nodejs中的回调函数

    关于回调函数通俗的解释为 在一个函数中传递的参数为另一个函数且另一个参数为作为参数的函数的参数 例如1 function say value console log value function father someFunction va
  • vue组件简单写法

  • React.Suspense和React.lazy代替react-loadable实现路由懒加载

    1 react loadable使用 import RouteConfig from react router config import Loadable from react loadable import React from rea
  • CTF 代码审计之绕过过滤的空白字符

    题目
  • R语言绘制分组带状图实战

    R语言绘制分组带状图实战 在数据可视化中 分组带状图是一种非常常用的图表类型 它可以同时展示多个组别的分布情况 并提供了一种可视化地比较不同组别之间差异的方式 在R语言中 我们可以使用ggplot2包中的geom jitter函数来轻松地创
  • javascript 变量值的交换

  • AcWing 1292. 哥德巴赫猜想 线性筛+二分查找

    题 线性筛代码 const int N 1e6 10 int pri N v N pri2 N int cnt void Getpri 线性筛 mem v 0 cnt 0 for int i 2 i lt 1e6 i if v i 0 没被