回文质数(洛谷)

您所在的位置:网站首页 凝胶色谱适于分离什么 回文质数(洛谷)

回文质数(洛谷)

2024-01-26 15:25| 来源: 网络整理| 查看: 265

文章目录 一、P1217 回文质数 Prime Palindromes题目描述输入格式输出格式输入输出样例样例输入 #1样例输出 #1 提示 二、思考1.什么是回文质数?搜狗百科启发 2.步骤包括哪些?判断素数函数判断回文数检查位数 三、 补全主函数的优化

一、P1217 回文质数 Prime Palindromes 题目描述

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

写一个程序来找出范围 [ a , b ] ( 5 ≤ a < b ≤ 100 , 000 , 000 ) [a,b] (5 \le a < b \le 100,000,000) [a,b](5≤a for (d3 = 0; d3 int i; if(a==1) return 0; if(a%2==0) return 0; else { for(i=2;i*i//判定回文,不懂请参考数字反转 int sum=0; int k=n; while(n!=0) { sum=sum*10+n%10; n/=10; } if(sum==k)//判断是否回文 return 1; else return 0; }

这个很常见。

检查位数 int digit(int x) { if((1000 for(i=2;i*i int sum=0; int k=n; while(n!=0) { sum=sum*10+n%10; n/=10; } if(sum==k) return 1; else return 0; } int digit(int x)//检查位数 { if((1000 if(i==9999989) //如果到了这个数,就break break; if(digit(i)&&reverse(i)&&IsPrime(i))//否则判断是否回文和素数 printf("%d\n",i);//输出每个回文质数 } return 0; } 主函数的优化

特判2之后,我们知道素数都是奇数,回文素数当然也不例外,所以在循环之前判断 l 的奇偶性,以便于在后面的循环中+2。至于下面的 if (i=9999989) break; 也可以不要,当初看别人写的题解,用着玩的。 下面这一行,也有讲究。

if(digit(i)&&reverse(i)&&IsPrime(i))

调用这三个函数得的结果,可是有顺序的哈,不一样的话用时不同。运行试试 在这里插入图片描述 这是正常的:if(digit(i)&&reverse(i)&&IsPrime(i));

在这里插入图片描述这个直接超时了,TLE,这次是:if(digit(i)&&IsPrime(i)&&reverse(i)) 显然判断回文数要在前的,回文数应该比素数少。

next 在这里插入图片描述这个还好,是:if(reverse(i)&&IsPrime(i)&&digit(i)) 总体来说还是第一个好,看其他题解,有埃式筛,线性筛之类的,但我实在是搞不懂怎么用的,还是这个容易理解。 无了无了,撒花★°:.☆( ̄▽ ̄):.°★ 。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3