双子数(枚举素数)

 

#include <iostream>
#include <vector>
#include <cmath>
using namespace std;

vector<long long> generate(long long n) {
    vector<bool> is(n + 1, true);// 标记是否为素数,初始值全为 true
    vector<long long> v;
    is[0] = is[1] = false;  // 0 和 1 不是素数
    for (long long i = 2; i <= n; i++) {
        if (is[i]) {
            v.push_back(i);  // 如果当前数是素数,存入结果数组
            for (long long j = i * i; j <= n; j += i) {
                is[j] = false;  // 将当前素数的倍数标记为非素数
            }
        }
    }
    return v;
}

int main() {
    int a = 2333;
    long long b = 23333333333333;
    long long n = sqrt(b);
    vector<long long> v = generate(n); // 生成所有小于等于 sqrt(b) 的素数
    long long ans = 0;

    for (int i = 0; i < v.size(); i++) {
        long long p = v[i];
        long long p2 = p * p;   // p 的平方,提前计算以减少重复计算
        for (int j = i + 1; j < v.size(); j++) {
            long long q = v[j];
            long long q2 = q * q;
            if (p > b / q2) break; // 提前判断是否溢出,避免计算 p^2 * q^2 导致超出 long long 范围
            long long x = p2 * q2;
            if (x >= a && x <= b) {// 检查是否在区间范围内,满足条件则计入答案
                ans++;
            }
        }
    }

    cout << ans;
    return 0;
}

long long j = i * i; j <= n; j += i

目的是在使用埃拉托色尼筛法时将素数 i 的所有倍数标记为非素数。

在筛法中,素数 i 的所有倍数可以从 i^2 开始筛除。因为对于所有小于 i^2 的倍数 i×k(其中 k<i),这些倍数在之前的迭代中已经被标记为非素数。

j += i:这步是使得从 i^2 开始的每个 i 的倍数都被标记为非素数。每次加上 i,这样可以确保我们遍历到的所有倍数是 i 的倍数。

提前计算 q² > b / p² 来避免乘法溢出。也就是b < q² * p² 的情况break

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/916932.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

硬盘物理故障的表现、原因和解决方法全解析

硬盘作为计算机数据存储的核心部件&#xff0c;其稳定性和可靠性直接关系到数据的完整性和系统的正常运行。然而&#xff0c;硬盘在使用过程中可能会遇到各种故障&#xff0c;其中物理故障是最具破坏性和难以修复的一类。 一、硬盘物理故障的表现 1、异常声音 硬盘在运行时发…

如何查看电脑关机时间

要查看电脑的关机时间&#xff0c;可以按照以下步骤进行操作&#xff1a; 1. 打开事件查看器&#xff1a;按下键盘上的Windows键R键&#xff0c;然后在弹出的运行对话框中输入"eventvwr.msc"&#xff0c;并按下Enter键。 2. 在事件查看器窗口中&#xff0c;单击左侧窗…

【MyBatis源码】深入分析TypeHandler原理和源码

&#x1f3ae; 作者主页&#xff1a;点击 &#x1f381; 完整专栏和代码&#xff1a;点击 &#x1f3e1; 博客主页&#xff1a;点击 文章目录 原始 JDBC 存在的问题自定义 TypeHandler 实现TypeHandler详解BaseTypeHandler类TypeReference类型参考器43个类型处理器类型注册表&a…

对话 OpenCV 之父 Gary Bradski:灾难性遗忘和持续学习是尚未解决的两大挑战 | Open AGI Forum

作者 | Annie Xu 采访、责编 | Eric Wang 出品丨GOSIM 开源创新汇 Gary Bradski&#xff0c;旺盛的好奇心、敢于冒险的勇气、独到的商业视角让他成为计算视觉、自动驾驶领域举重若轻的奠基者。 Gary 曾加入 Stanley 的团队&#xff0c;帮助其赢得 2005 年美国穿越沙漠 DA…

IDEA 开发工具常用快捷键有哪些?

‌在IDEA中&#xff0c;输出System.out.println()的快捷键是sout&#xff0c;输入后按回车&#xff08;或Tab键&#xff09;即可自动补全为System.out.println()‌‌。 此外&#xff0c;IDEA中还有一些其他常用的快捷键&#xff1a; 创建main方法的快捷键是psvm&#xff0c;代…

el-table合并单元格之后,再进行隔行换色的且覆盖表格行鼠标移入的背景色的实现

el-table 中有现成的隔行换色功能&#xff0c;只要增加 stripe 属性即可。但是如果有单元格合并的话&#xff0c;这个属性就不可用了。这时候我们就需要动点小心思了。 基于相同字段进行合并 单元格合并&#xff1a;基于表头中的某一列&#xff0c;具有相同值的个数相加进行合…

ChatGPT学术专用版,一键润色纠错+中英互译+批量翻译PDF

ChatGPT academic项目是由中科院团队基于ChatGPT专属定制。论文润色、语法检查、中英互译、代码解释等可一键搞定&#xff0c;堪称科研神器。 功能介绍 我们以3.5版本为例&#xff0c;ChatGPT学术版总共分为五个区域&#xff1a;输入控制区、输出对话区、基础功能区、函数插件…

【大数据技术基础 | 实验十】Hive实验:部署Hive

文章目录 一、实验目的二、实验要求三、实验原理四、实验环境五、实验内容和步骤&#xff08;一&#xff09;安装部署&#xff08;二&#xff09;配置HDFS&#xff08;三&#xff09;启动Hive 六、实验结果&#xff08;一&#xff09;启动结果&#xff08;二&#xff09;Hive基…

【MyBatis操作数据库】XML配置

【配置连接字符串和MyBatis】 注意&#xff0c;这行代码代表着xml必须在mapper文件夹的下面&#xff08;路径必须保持一致&#xff09; 配置完文件后&#xff0c;需要写持久层代码 添加 mapper 接⼝&#xff1a; 添加 UserInfoXMLMapper这样的xml文件&#xff1a; 单元测试&a…

引领豪华MPV新趋势,比亚迪夏内饰科技广州车展全球首发

11月15日&#xff0c;比亚迪第五代DM技术中大型旗舰MPV夏内饰科技在广州车展正式发布。作为王朝网全新IP夏的首款同名车型&#xff0c;夏采用王朝新一代内饰设计语言&#xff0c;传承华夏文化深厚底蕴&#xff0c;从技术、平台、安全、设计、空间、智享、智驾七大维度&#xff…

flutter字体大小切换案例 小字体,标准字体,大字体,超大字体案例

flutter字体大小切换案例 小字体&#xff0c;标准字体&#xff0c;大字体&#xff0c;超大字体案例 Android iOS设备带有选择记录 我的flutter项目版本 environment: sdk: ‘>3.4.4 <4.0.0’ 图片案例 pubspec.yaml 添加依赖 # 屏幕尺寸适配 https://github.com/OpenF…

Schnorr 和 BLS 算法详解

Schnorr 签名和 BLS 签名在区块链技术中都有着重要的应用。它们各自具备独特的优势&#xff0c;使其在不同的区块链应用场景中得到广泛使用。 Schnorr签名算法 Schnorr签名算法是一种基于离散对数问题的数字签名算法&#xff0c; 由德国密码学家 克劳斯施诺尔 &#xff08;Cl…

OpenHarmony的公共事件

OpenHarmony的公共事件 公共事件简介 CES&#xff08;Common Event Service&#xff0c;公共事件服务&#xff09;为应用程序提供订阅、发布、退订公共事件的能力。 公共事件分类 公共事件从系统角度可分为&#xff1a;系统公共事件和自定义公共事件。 系统公共事件&#…

vue3中ElementPlus引入下载icon图标不显示透明问题解决教程方法

问题&#xff1a;今天用vue3开发&#xff0c;使用ElementPlus图标引入了但是不显示&#xff0c;是空白透明 解决&#xff1a; 1、在main.js中引入element-plus/icons-vue图标库 import * as ElIcons from element-plus/icons-vue; // 引入图标库 2、注册所有图标 // 注册所有…

性能测试中的核心指标

在性能测试中&#xff0c;核心指标是用来评估系统性能和表现的关键指标。这些指标可以帮助测试人员了解系统在不同负载和场景下的表现&#xff0c;以便发现系统的瓶颈和问题。以下是性能测试中的几个核心指标。 1、响应时间 响应时间是指系统在收到请求后&#xff0c;从接收请…

星际流浪的大模型

种子世界还在太空漫游&#xff0c;航线上捡到一个铁盒子&#xff0c;那是一块硬盘&#xff0c;古老的东西。 长老就安排歌者&#xff0c;你去研究&#xff0c;查查硬盘的来源坐标。 费好大劲&#xff0c;歌者把硬盘中的程序和数据激活&#xff0c;运行了起来。 很有意思&#x…

Docker部署Kafka SASL_SSL认证,并集成到Spring Boot

1&#xff0c;创建证书和密钥 需要openssl环境&#xff0c;如果是Window下&#xff0c;下载openssl Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions 还需要keytool环境&#xff0c;此环境是在jdk环境下 本案例所使用的账号密码均为&#xff1a; ka…

每日论文20-24RFIC四核三模带自动模式跟踪输出缓冲器的VCO

前段时间赶tapeout要死要活&#xff0c;有一段时间没看&#xff0c;现在继续。 《An 18.5-to-36.5 GHz 206.8 dBc/Hz FoMT Quad-Core Triple-Mode VCO with Automatic-Mode-Tracking Output Buffers 》24RFIC 今年的RFIC&#xff0c;四核三模&#xff0c;桥位于每个线圈的中心…

Vue3 虚拟列表组件库 virtual-list-vue3 的使用

Vue3 虚拟列表组件库 virtual-list-vue3 的基本使用 分享个人写的一个基于 Vue3 的虚拟列表组件库&#xff0c;欢迎各位来进行使用与给予一些更好的建议&#x1f60a; 概述&#xff1a;该组件组件库用于提供虚拟化列表能力的组件&#xff0c;用于解决展示大量数据渲染时首屏渲…

rust逆向初探

rust 逆向葵花宝典 rust逆向技巧 rust逆向三板斧&#xff1a; [!NOTE] 快速定位关键函数 (真正的main函数)&#xff1a;观察输出、输入&#xff0c;字符串搜索&#xff0c;断点等方法。定位关键 加密区 &#xff1a;根据输入的flag&#xff0c;打硬件断点&#xff0c;快速捕获…