回文质数 Prime Palindromes(欧拉筛)

回文质数 Prime Palindromes (欧拉筛法优化 AND 生成回文数) 到了现在,只需要从5枚举到 floor(sqrt(p))的所有可能为质数的数,也就是在6的两边的数字,依次p%这个数 看看这个数是不是p的因数,如果是那么p就不是质数,否则p就是质数。是的,我和你们大多数人一样,都是因为超时而不知道怎么办,我冥思苦想了一周,在网上搜了好久,才想出解决的办法。综上所述,只有(p%6==1 || p%6==5)时p才有可能为质数。先把左半边翻转形成右半边,再把右半边第一个不用,合并左,右半边。直接把左半边翻转形成右半边,合并左,右半边。已经有一半(左),生成右半边。 阅读详情

回文质数 Prime Palindromes

题目描述
因为 151 既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数。

写一个程序来找出范围 [a,b] (5 < a < b < 100,000,000)a,b( 一亿)间的所有回文质数。

输入格式
第 1 行: 二个整数 a 和 b .

输出格式
输出一个回文质数的列表,一行一个。

输入输出样例
输入
5 500
输出
5
7
11
101
131
151
181
191
313
353
373
383

PS:383后面是否有空行并不会检测

错误代码

#include <iostream>
#include <stdio.h>
#include <cstring>
using namespace std;
#define Max 100000000 
bool IsSu[Max+1];
int Prime[Max];//存放素数的数组
bool IsHWS(int x)
{
    //思路将个位十百反转,若等于原数,则为回文数
    int k = x;//储存该数
   // k = k%10;//求出个位
    int nums = 0;//存储反转后数
    while(k!=0)
    {
        nums = nums*10+k%10;
        k = k/10;
    }
    if(nums==x)
    {
        return true;
    }
    else{
        return false;
    }
}

int main()
{
    int a,b;
    scanf("%d%d",&a,&b);
    int t = 0;
    memset(IsSu,true,sizeof(bool)*(Max+1));
    if(b>=Max)
    {
        b = Max-1;
    }
    //假设标记0为素数
    //用数组的下标作为素数
    for(int i=2;i<=b;i++)//遍历寻找素数
    {
        if(IsSu[i]==true)
        {
            //如果是素数
            Prime[t] = i;
            t++;//记录素数的个数
        }
        for(int j=0;j<t&&i*Prime[j]<=b;j++)
        {
            IsSu[Prime[j]*i] = false;
            if(i%Prime[j]==0)
            {
                break;
            }
        }
    }
    if(a%2==0)
    {
    	a++;
	}
    for(int i=a;i<=b;i++)
    {
    	if(i>10000000) break;
        if(IsHWS(i)==true&&IsSu[i]==true)
        {
            printf("%d\n",i);
        }
    }
    return 0;
}

问题分析

  1. 一开始根本不会回文数的判断方法,脑子里想的全是栈,然后又不知道什么时候停止入栈,什么时候出栈,结果直接看了大佬的代码,用变量接收x的一个个位上数字,再将个位作为最高位与原x比较
  2. 学了回文数判断后,用埃氏筛筛选素数,结果超时,又双看了大佬代码,学了欧拉筛,结果兴奋一试,还是超时,浪费n久后,终于发现:

偶数位数回文数(除11)必定不是质数(自行百度),所以只要运行到10000000

偶数位回文数会被11整除
这样只需要给b添加一个条件即可

#include <iostream>
#include <stdio.h>
#include <cstring>
using namespace std;
#define Max 100000000 
bool IsSu[Max+1];
int Prime[Max];//存放素数的数组
bool IsHWS(int x)
{
    //思路将个位十百反转,若等于原数,则为回文数
    int k = x;//储存该数
   // k = k%10;//求出个位
    int nums = 0;//存储反转后数
    while(k!=0)
    {
        nums = nums*10+k%10;
        k = k/10;
    }
    if(nums==x)
    {
        return true;
    }
    else{
        return false;
    }
}

int main()
{
    int a,b;
    scanf("%d%d",&a,&b);
    int t = 0;
    memset(IsSu,true,sizeof(bool)*(Max+1));
    if(b>=Max)
    {
        b = Max-1;
    }
    //假设标记0为素数
    //用数组的下标作为素数
    for(int i=2;i<=b;i++)//遍历寻找素数
    {
        if(IsSu[i]==true)
        {
            //如果是素数
            Prime[t] = i;
            t++;//记录素数的个数
        }
        for(int j=0;j<t&&i*Prime[j]<=b;j++)
        {
            IsSu[Prime[j]*i] = false;
            if(i%Prime[j]==0)
            {
                break;
            }
        }
    }
    if(a%2==0)
    {
    	a++;
	}
	if(b>10000000)
	{
		b=10000000
	}
    for(int i=a;i<=b;i++)
    {
    	if(i>10000000) break;
        if(IsHWS(i)==true&&IsSu[i]==true)
        {
            printf("%d\n",i);
        }
    }
    return 0;
}

总结

  1. 欧拉筛的使用
  2. 回文数的判断方法
P1217 [USACO1.5]回文质数 Prime Palindromes(素数筛法/打表) P1217——素数筛法/打表 一:埃氏筛(时间复杂度——nloglogn) 重点:一个数x是合数,则它的倍数也是合数 //用埃氏筛生成质数表 const int N=1e8; bool prime[N]; void a_prime(int b){ memset(prime,1,sizeof(prime));//初始化默认全为质数 prime[0]=prime[1]=0;//0和1不是质数 int k=sqrt(b); for(int i=2;i<=k;i++){ 阅读详情

相关推荐

Wireshark时间分析实战:精准调试网络延迟与时间同步问题

本文深入探讨了Wireshark在网络延迟与时间同步问题分析中的核心应用。通过实战案例,详细讲解了如何设置时间显示格式、利用时间参考点量化关键路径延迟,以及运用时间平移功能校正错位时间轴。掌握这些时间分析技巧,能帮助网络工程师精准定位隐藏于数据包时序中的性能瓶颈与故障根源。

weixin_29290963的博客 262

回文质数 Prime Palindromes

写一个程序来找出范围 [a,b] (5

心如冰清,天塌不惊 204

老司机避坑指南:UC3842自举驱动电路发热严重?这样选C39/C37电容值最稳

本文针对UC3842自举驱动电路发热严重的问题,深入剖析了驱动波形边沿速度与损耗的矛盾根源。通过实测数据与热成像分析,重点阐述了关键电容C39/C37的选型策略,提供了从经验公式到量化计算的优化方法,帮助工程师在发热与效率间找到最佳平衡点,并探讨了分立方案与专用驱动IC的适用场景。

lambda的博客 747

回文质数 Prime Palindromes(埃式筛选法)

因为 151 既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数。 写一个程序来找出范围 [a,b] (5 \le a < b \le 100,000,000)a,b( 一亿)间的所有回文质数。 #include <iostream> #include <cmath> #include <string.h> using namespace std; bool huiwen(int n); bool huiwen(int n) ..

weixin_51966728的博客 320

Halcon棋盘格畸变矫正

通常我们使用的相机都是带有一定的畸变的,只是畸变的大小不同。对于我们常见的测量项目来说,对测量精度的要求很高,通常从相机镜头上进行优化,但是即使镜头优化或者成本原因,造成图像仍有一定的畸变时,我们就可是使用棋盘格标定板,进行畸变矫正。

m0_51559565的博客 3396

卡尔曼滤波五步拆解:用Excel手推姿态解算全过程

本文通过Excel手推演示,详细拆解了卡尔曼滤波在姿态解算中的五步核心流程。文章以融合陀螺仪与加速度计数据估算角度为例,从状态预测、协方差更新到增益计算,逐步展示如何将抽象的矩阵运算转化为可视化的表格计算,帮助读者直观理解滤波器的“预测-修正”机制,并为算法实现与参数调优提供清晰指导。

hhh00的博客 980

【洛谷新手村】【回文+质数判断】回文质数 Prime Palindromes

题目链接 【题意】: 给定[L,R],问区间内,输出回文数而且是质数的数字。 【题解】: 首先细心的你会发现,本来我以为是很大工程量的搜索,后来发现很少。原因是明显发现其实位数为偶数的,除了11其余的都为合数,为什么呢,用同余摸定理证明即可: 证明偶数位的回文串除了11外,其余的必定为合数。 证明 过程: ∵1000=11*90+10,,100=11*9+1,10=0*11+...

Z_sea的博客 889

【文章阅读+代码复现】Point-GNN

Brief 在3D点云语义分割方法中,GNN已经做了很多可用的方案,但是在目标检测上依旧是采用比较传统的CNN和稀疏卷积的组合,这一篇文章是研究了图卷积在3D检测的中的用法。来自卡内基梅隆大学。已经被CVPR2020接收. 这里是 paper 这里是 code Abstruct 一个采用GNN设计的3D目标检测框架 过程是先将点云场景编码成图结构,随后设计了一个叫point-GNN的网络结构,在...

有所为,有所成长 1万+

回文质数 Prime Palindromes(2 输入输出的优化)

1.题目中的数据大小并不会超出 int 上线,所以之前代码中的 long long 类型都可以转换为 int 类型。之间的绑定(虽然这里主要关注输出,但这样设置能整体优化输入输出的效率),减少不必要的刷新等操作,提升输出速度。解除 C++ 标准输入输出流与 C 标准输入输出流之间的同步,并且可以搭配。解除 C++ 标准输入输出流与 C 标准输入输出流之间的同步,以及设置。1.整体思路不变,但是在之前的代码实现中有几个小的修改地方。之间的绑定,减少不必要的刷新等操作,提升读入速度。

LZRdamno的博客 605

FRM(Financial Risk Manager,金融风险管理师)知识点总结归纳

FRM知识点总结(150字) FRM考试分为两级:一级侧重基础理论和工具,包含风险管理基础、定量分析、金融市场产品、估值与风险建模四大模块,涵盖风险管理框架、统计学方法、衍生品定价及VaR计算等核心内容。二级聚焦实际应用,分为市场风险、信用风险、操作风险、流动性风险、投资管理和市场前沿六大模块,深入探讨高级风险度量技术(如极值理论)、信用风险模型、巴塞尔协议及新兴风险议题。考试体系贯穿"风险识别→度量→管理→监管"逻辑主线,强调定量分析与实务案例的结合,覆盖传统金融风险和区块链、ESG等

极客神殿 1441

Unity零基础到入门 ☀️| 轻松学会 Unity界面布局和简单实例——入门级!(^_−)☆

入门级Unity知识,一起加油呀!

努力前行,总会成为自己心中的那道光 1万+

P1217 [USACO1.5]回文质数 Prime Palindromes【暴力枚举、欧拉筛】

题目描述 因为 151 既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数。 写一个程序来找出范围[a,b] (5 \le a < b \le 100,000,000)[a,b](5≤a<b≤100,000,000)( 一亿)间的所有回文质数。 输入格式 第 1 行: 二个整数 a 和 b . 输出格式 输出一个回文质数的列表,一行一个。 输入输出样例 输入 #1复制 5 500 输出 #1复制 5 7 11 101 131 151.

胡小涛的博客 295

Python爬虫实战:高效爬取CNKI知网文献数据的技术解析

本文将详细介绍如何使用Python最新技术构建一个高效的CNKI知网文献爬虫系统。我们将从爬虫基础知识讲起,逐步深入到高级反反爬技术、分布式爬取、智能解析等前沿内容。文章包含完整的代码实现,涵盖请求模拟、数据解析、持久化存储等关键环节,并特别针对CNKI的反爬机制提供解决方案。通过本文,读者将掌握构建专业级学术文献爬虫的全套技术栈。关键词:Python爬虫、CNKI爬取、反反爬技术、文献数据挖掘、Scrapy框架本文详细介绍了如何使用Python最新技术构建CNKI知网文献爬虫。

2201_76125261的博客 2075

筛素数-线性筛法(P1217 [USACO1.5] 回文质数 Prime Palindromes)

平常我们使用筛素数的时候,只需要使用欧拉筛法(线性筛法)就行了,因为复杂度是为。O(n)的,而且比较好写。

m0_64267361的博客 890

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

【题解】【洛谷P1217】【枚举】—— [USACO1.5] 回文质数 Prime Palindromes

平台为全国青少年提供最专业的编程教育服务,包括提供最新最详细的编程相关资讯、最专业的竞赛指导、最合理的课程规划等。本平台利用趣味性和互动性强的教学方式,旨在激发孩子们对编程的兴趣,培养他们的逻辑思维能力和创造力,让孩子们在轻松愉快的氛围中掌握编程知识,为未来科技人才的培养奠定坚实基础。考虑到回文质数分布得比较稀疏,可以先写一个程序,输出所有的回文质数,再进行打表。由于回文数比质数的分布更稀疏,所以枚举回文数的时间复杂度较小。既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以。

Pantheraonca的博客 1756

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

[USACO1.5]回文质数 Prime Palindromes题解

这里附上题目链接:Prime Palindromes。 ~~手动分割~~ 题目 ~~手动分割~~ 思路解析 本题考察素数筛法与回文数判断法。 1.约数枚举(普通筛法) #include <stdio.h> #include <stdlib.h> int a,b; int if_palindromic_number(int c)//回文数...

ZhuhaoNan134的博客 335

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

洛谷 - P1217 [USACO1.5]回文质数 Prime Palindromes(欧拉线性筛+数论小知识)

题目链接:点击查看 题目大意:给出一个a和b,求出区间[a,b]中所有回文质数,回文质数指的是一个数既是回文数也是质数 题目分析:首先质数好判断,我们只需要用欧拉筛预处理打好表即可,判断回文数我们也只需要用一个函数O(lgn)的时间就可以判断,但a和b的范围高达1e8,1e8*lgn最大能到1e9,评测机肯定是顶不住的,这个时候我们该怎么办呢,这里我们需要补充一下关于回文质数的几个小性质吧: ...

Falcon的博客 534

P1217 [USACO1.5]回文质数 Prime Palindromes

欧拉筛,回文质数

m0_64045085的博客 713

每日一题洛谷P1217 [USACO1.5] 回文质数 Prime Palindromes c++

作者实测先一后二AC6个,先二后一AC9个。想要最后一个AC的话要用到一种筛选质数的算法,欧拉筛(线性筛)和埃氏筛都可以。其实作者两个都知道,但是都不会写。于是写了一个简略版的欧拉筛(就是for中的第一个if语句)。大意是在判断回文数时先把一些明显不符合题意的数字直接跳过,作者跳过了2、3、5的倍数。整个代码的思路是:1、初步筛选出符合条件的数;此题可以分为两个步骤,一、判断质数,二、判断回文数。显然,先判断回文数会快很多。

2401_88089822的博客 630

洛谷 P1217:[USACO1.5] 回文质数 Prime Palindromes

● 在算法竞赛或编程问题中,若需处理回文质数,一种方法是直接将数的范围限制在 ≤7 位,避免无效计算‌。欧拉筛法(又称线性筛法)是一种高效筛选素数的算法,其核心特点是保证每个合数仅被其最小质因子筛除一次,从而实现 O(n) 的时间复杂度‌。好在回文质数问题的数据规模限制在 ≤7 位,故可据此进行优化,避免 TLE。因为 151 既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数。● 如下判断素数的经典代码,当 n 较大时(如 1e7),会非常耗时‌,最终导致 TLE。

2502_91177724的博客 644

刷题随记 洛谷P1217 [USACO1.5]回文质数 Prime Palindromes 回文数与质数的处理思想

洛谷 P1217 [USACO1.5]回文质数 Prime Palindromes. 找回文数 问题描述: 回文数不好构造,但可以利用函数进行判断该数是否为回文数 错误示范 for (d1 = 1; d1 <= 9; d1+=2) { // 只有奇数才会是素数 for (d2 = 0; d2 <= 9; d2++) { for (d3 = 0; d3 <= 9; d3++) { palindrome = 10000*d1 + 100

EternalArthorn的博客 139

洛谷 P1217 [USACO1.5] 回文质数 Prime Palindromes

写一个程序来找出范围 [�,�](5≤�<�≤100,000,000)[a,b](5≤a<b≤100,000,000)(一亿)间的所有回文质数。因为 151151 既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151151 是回文质数。提示 2: 要产生正确的回文数,你可能需要几个像下面这样的循环。提示 1: 找出所有的回文数再判断它们是不是质数(素数).第一行输入两个正整数 �a 和 �b。输出一个回文质数的列表,一行一个。题目翻译来自NOCOW。

qq_73132802的博客 243

【洛谷 P1217】[USACO1.5] 回文质数 Prime Palindromes 题解(欧拉筛法+回文判断)

因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以151是回文质数。写一个程序来找出范围ab5≤ab≤100000000(一亿)间的所有回文质数。

HEX9CF的技术博客 600
上一篇: P1009 阶乘之和 洛谷
下一篇: 洛谷入门 循环结构
sky666tzz
博客等级 码龄7年 3粉丝 51原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值