11是一个java回文素数数.因为它不仅是素数,同时还是回文数回文数,即把一个数字正

11:回文素数 - 华山青竹 - 博客园
随笔 - 450, 文章 - 13, 评论 - 14, 引用 - 0
11:回文素数总时间限制:5000ms内存限制:65536kB描述
一个数如果从左往右读和从右往左读数字是相同的,则称这个数是回文数,
如121,都是回文数。给定位数n,找出所有既是回文数又是素数的n位十进制数。
(注:不考虑超过整型数范围的情况)。输入
位数n,其中1&=n&=9。输出
第一行输出满足条件的素数个数。
第二行按照从小到大的顺序输出所有满足条件的素数,两个数之间用一个空格区分。样例输入
分析:参见百度百科
回文素数是一个既是素数又是回文数的整数。回文素数与记数系统的进位制有关。
回文素数是指,对一个整数n(n≥11)从左向右和从右向左读其结果值相同且是素数,即称n为回文素数。
除了11,偶数位的数不存在回文质数。4位,6位,8位……数不存在回文质数。
最初几个回文素数:11,101,131,151,181,191,313,353,373,383,727,757,787,797,919,929……两位回文素数1个,三位回文素数15个,五位回文素数93个,七位回文素数668个,九位回文素数5172个。
对n为偶数的情况,直接特殊处理。
对n为奇数的情况,可以先特殊处理n==1的情况,然后对n==3、5、7、9的情况按如下方法处理:
先想办法够造出一个n位的回文数temp然后判断temp是否是质数。
够造n位的回文数temp的方法:用所有的(n+1)/2位的数分别够造n位的回文数。例如:可以用123够造一个5位的回文数12321.
(注意:123可以够造出1两个回文数,但是我们只需要使用123够造12321,在接下来的循环过程中会使用321够造32123这个回文数。)
具体代码:
1 #include&stdio.h&
2 #include&stdlib.h&
3 #include&math.h&
4 int isPrime(int n);//判断n是否质数
5 long long huiWen(int n);//例如:n等于123,返回12321这样一个回文数
6 long myPow(int x);//计算并返回10^x
8 int main()
<span style="color: #
<span style="color: #
long begin,end,i;
<span style="color: #
long long a[<span style="color: #00]={<span style="color: #},
<span style="color: #
long long temp=<span style="color: #;
<span style="color: #
<span style="color: #
freopen("<span style="color: #.IN","r",stdin);
<span style="color: #
freopen("<span style="color: #.out","w",stdout);
<span style="color: #
<span style="color: #
scanf("%d",&n);
<span style="color: #
<span style="color: #
if(n==<span style="color: #) printf("<span style="color: #\n11\n");
<span style="color: #
else if(n%<span style="color: #==<span style="color: #) printf("<span style="color: #\n");
<span style="color: #
else if(n==<span style="color: #) printf("<span style="color: #\n2 3 5 7\n");
<span style="color: #
<span style="color: #
<span style="color: #
n=(n+<span style="color: #)/<span style="color: #;
<span style="color: #
begin=myPow(n-<span style="color: #);
<span style="color: #
end=myPow(n);
<span style="color: #
count=<span style="color: #;
<span style="color: #
for(i=i&i++)
<span style="color: #
<span style="color: #
temp=huiWen(i);
<span style="color: #
if(isPrime(temp)==<span style="color: #) { a[count]= count++; }
<span style="color: #
<span style="color: #
printf("%d\n",count);
<span style="color: #
for(i=<span style="color: #;i&i++)
<span style="color: #
<span style="color: #
printf("%d ",a[i]);
<span style="color: #
<span style="color: #
<span style="color: #
return <span style="color: #;
<span style="color: # }
<span style="color: # int isPrime(int n)
<span style="color: # {
<span style="color: #
<span style="color: #
x=sqrt(n);
<span style="color: #
for(i=<span style="color: #;i&=x;i++)
<span style="color: #
<span style="color: #
if(n%i==<span style="color: #) return <span style="color: #;
<span style="color: #
<span style="color: #
return <span style="color: #;
<span style="color: # }
<span style="color: # long long huiWen(int n)//例如:n等于123,返回12321这样一个回文数
<span style="color: # {
<span style="color: #
long long ans=n;
<span style="color: #
n=n/<span style="color: #;
<span style="color: #
while(n&<span style="color: #)
<span style="color: #
<span style="color: #
ans=ans*<span style="color: #+n%<span style="color: #;
<span style="color: #
n=n/<span style="color: #;
<span style="color: #
<span style="color: #
<span style="color: # }
<span style="color: # long myPow(int x)//计算并返回10^x
<span style="color: # {
<span style="color: #
<span style="color: #
long ans=<span style="color: #;
<span style="color: #
for(i=<span style="color: #;i&x;i++) ans=ans*<span style="color: #;
<span style="color: #
<span style="color: # }
题目连接:/ch0113/11/数学娱乐:回文素数 | 死理性派小组 | 果壳网 科技有意思
890799人加入此小组
回文素数(Palindromic prime ),是同时是素数和回文数的正整数。这个定义想必我都不需要说,大家一看便知。显然,这个定义依赖于进制。十进制下的前几个回文素数是2, 3, 5, 7, 11, 101, 131, 151, 181, 191, 313, 353, 373, 383, 727, 757, 787, 797, 919, 929, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1……请依次证明(或证伪):1.除了11以外,是否有偶数位的(十进制)回文素数。2.是否有无穷多的(十进制)回文素数。3.所有回文素数的倒数和收敛。4.仿照素数定理写出一个回文素数定理。5.证明所有的梅森素数和费马素数都是二进制的回文素数。答案及更多有趣的事实:开学了伤不起啊……广告:是我的小网站,欢迎捧场~
+ 加入我的果篮
能杀到花吗?
数学/化学爱好者
梅森数和费马数按定义都是2进制下的回文数= =b11以外的偶数位回文数目测能被11整除。
…能回答的居然都被抢了。
(C)2017果壳网&&&&京ICP证100430号&&&&京网文[-239号&&&&新出发京零字东150005号&&&&
违法和不良信息举报邮箱:&&&&举报电话:既是回文数又是素数的三位数 既是回文数又是素数的三位数???&br&
全部答案(共1个回答)
解:一个五位数是回文数,相当于该数的个位与万位数字相同,且十位与千位数字相同。
符合题意的五位数的个位与万位数字共有9种可能,十位与千位数字共有10种可能,百...
把N反转过来,然后和原来的数比较,如果相等就是,不等就不是,很简单
求救啊,一晚醒十来次,还大哭!
大家还关注
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
下载作业帮安装包
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
pascal题回文素数 描述:因为151即是一个素数又是一个回文数(从左到右和从右到左是看一样的),所以 151 号是回文素数.写一个程序来计算范围[a,b](5
无视即可15512
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
简单枚举肯定会超时这道题有两种思路: (1)用筛法求出1..1e8范围内的素数,然后判断每个素数是否是回文数. (2)生成1..1e8范围内的回文数,然后判断它是否是素数. 思路1的复杂度是O(n),思路2的复杂度是O(√n*√n)=O(n),从复杂度来看两种思路没有差别.但思路1用筛法用素数要开O(n)的数组,在n=1e8是就是90M,超出了空间限制,(而且有可能超时),而思路2的空间复杂度是O(1)的,所以我们用思路2. 如何按照从小到大的顺序生成回文数呢? 设生成位数为l的回文数,若l是奇数,那么从小到大枚举(l+1) div 2位的数,然后复制翻转生成一个回文数;若l是偶数,那么从小到大枚举l div 2位的数,然后复制翻转生成一个回文数.上诉两个过程交替进行就可以从小到大生成回文数了. 很有效的优化:任意偶数长度的回文数都不 可能为质数(除了11),因为它能被11整除,而11恰好只有自身和1两个因子.除2外,所有偶数均不可能是质数.var
a,b,i,j,k,l,t:
d:array[1..10000]begin
readln(a,b);
close(input);
d[1]:=5;d[2]:=7;d[3]:=11;
for i:=1 to 9 do
for j:=0 to 9 do
d[t]:=i*101+j*10;
for i:=1 to 9 do
for j:=0 to 9 do
for k:=0 to 9 do
d[t]:=i*10001+j*1010+k*100;
for i:=1 to 9 do
for j:=0 to 9 do
for k:=0 to 9 do
for l:=0 to 9 do
d[t]:=i*1000001+j*100010+k*10100+l*1000
for i:=4 to t do
for j:=2 to trunc(sqrt(d[i])) do
if d[i] mod j=0 then
for i:=1 to t do
if a&=d[i] then
if d[i]&=b then
writeln(d[i])
为您推荐:
其他类似问题
扫描下载二维码回文诗与回文数
诗歌在我国历史悠久,回文诗则是诗词花园中绚丽的奇葩,也是有趣的文字魔方。
由于创作难度大,限制了回文诗的发展,而恰恰又是这个原因,再加上回文诗独特的美学价值,吸引了不少文豪一显身手。其中,我最喜欢苏轼的这首:
空花落尽酒倾缸,日上山融雪涨江。红焙浅瓯新活火,龙团小碾斗晴窗。
倒着读便是:
窗晴斗碾小团龙,火活新瓯浅焙红。江涨雪融山上日,缸倾酒尽落花空。
正着读,此诗把取水备茶、生火煎煮、赏景慢饮的画面写得活灵活现,倒着读又是一幅窗前品茗、情趣盎然的晴饮图。
无独有偶,英语中也有类似的回文现象。拿破仑曾说过: “Able was I ere I saw Elba。”(在我看到厄尔巴岛前,我所向无敌。)近几年大热的美剧《生活大爆炸》中,谢尔顿曾说:“73是第21个素数,倒过来,37,则是第12个素数,再倒过来,21,恰好是7和3的乘积。另外,在二进制中,73是一个回文数:1001001。”
没错,在数学中也有“回文”:如果一个正整数,从左向右看(正序数)与从右向左看(反序数)是一样的,我们就称其为回文数。例如上面说的1001001就是一个回文数。同回文诗一样,回文数有许多奇妙的地方,数学家们对其进行了深入研究,留下不少有趣的猜想。其中最著名的就是:
任意给一个不是回文数的正整数,加上它的反序数,如果仍然不是回文数,则再加上和的反序数,如此重复有限次数后,一定能得到一个回文数。
我们随便取一个数,例如86,它不是回文数,我们将它和反序数68相加:
154仍然不是回文数,我们将上述过程重复一遍:
154+451=605
如此继续下去:
605+506=1111
这样,我们就得到了一个回文数。
这个猜想是否成立,目前还没有确定。虽然利用计算机运算,大多正整数都支持这个结论,但是还有一些数,例如196,没有被验证。
回文数猜想表述简单,连小学生都可以轻易看懂,但解决难度巨大,与哥德巴赫猜想和孪生素数猜想一样,是一个世界性的难题。不过,由于陈景润、张益唐等数学家的努力,后两个重要问题已经向前迈了一大步。也许,有朝一日,本报读者中就有人能解决回文数猜想呢。
(本栏长期征集“日知录”三字篆刻,投稿邮箱:)
责任编辑:
声明:本文由入驻搜狐号的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。}

我要回帖

更多关于 1000以内回文素数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信