素数回文

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 9266    Accepted Submission(s): 2167

Problem Description
xiaoou33对既是素数又是回文的数特别感兴趣。比如说151既是素数又是个回文。现在xiaoou333想要你帮助他找出某个范围内的素数回文数,请你写个程序找出 a 跟b 之间满足条件的数。(5 <= a < b <= 100,000,000);
 
Input
这里有许多组数据,每组包括两组数据a跟b。
 
Output
对每一组数据,按从小到大输出a,b之间所有满足条件的素数回文数(包括a跟b)每组数据之后空一行。
 
Sample Input
5 500
 
Sample Output
5
7
11
101
131
151
181
191
313
353
373
383
 
这道题的数据有点大,第一是素数其次是回文数,所以不管哪个都很容易超内存,
所以优化是必须的。
那么就好先了解一下回文数和素数的性质。。。
回文数:偶位数回文数必整除11.先温习一下忘掉多年的知识,
    能整除11的数的条件:数的偶数位和与奇数位和的差可整除11,
    即整个数可以整除11.易证偶位回文数整除11.这样就缩小了查找的范围,
    而且缩小了90%!!!
素数:只能被自身和1整除的数。。。
 

所以;除了11是回文素数以外,其他偶数位回文数均可被11整除并且是合数,

然后就枚举1位3位5位7位9位数的数,然后判断是否为素数即可!!!

本人不才只能想到这菜鸟的思路了,不过浅显易懂啊!o(∩_∩)o 哈哈!

ps:http://acm.hdu.edu.cn/showproblem.php?pid=1431

#include<stdio.h>
__int64 a,b; bool judge(__int64 x)//判断素数
{
for(int i=;i*i<=x;i++)
if(x%i==)
return false;
return true;
} void solve()
{
__int64 ans,i,j,k,m,r;
if(a<=) //1位素数和11
{
for(i=a;i<=;i++)
{
if(i>b)
return ;
if(judge(i))
printf("%I64d\n",i);
}
}
if(b>) //3位数时
{
for(i=;i<=;i+=)
for(j=;j<=;j++)
{
ans = i*+j*;
if(ans>=a&&ans<=b&&judge(ans))
printf("%I64d\n",ans);
if(ans>=b)
return;
}
} if(b>) //5位数时
{
for(i=;i<=;i+=)
for(j=;j<=;j++)
for(k=;k<=;k++)
{
ans = i*+j*+k*;
if(ans>=a&&ans<=b&&judge(ans))
printf("%I64d\n",ans);
if(ans>=b)
return;
}
} if(b>) //7位数时
{
for(i=;i<=;i+=)
for(j=;j<=;j++)
for(k=;k<=;k++)
for(m=;m<=;m++)
{
ans = i*+j*+k*+m*;
if(ans>=a&&ans<=b&&judge(ans))
printf("%I64d\n",ans);
if(ans>=b)
return;
}
} if(b>) //9位数时
{
for(i=;i<=;i+=)
for(j=;j<=;j++)
for(k=;k<=;k++)
for(m=;m<=;m++)
for(r=;r<=;r++)
{
ans = i*+j*+k*+m*+r*;
if(ans>=a&&ans<=b&&judge(ans))
printf("%I64d\n",ans);
if(ans>=b)
return;
}
} } int main()
{
while(scanf("%I64d%I64d",&a,&b)!=EOF)
{
if(a>b)
{
a=a^b;
b=a^b;
a=a^b;
}
solve();
printf("\n");
}
return ;
}

吐槽:寒假要在家编程真的是。。。。。无力啊!早上又起不来,,,然后关键是心不静啊!(┬_┬)

素数回文(hdu1431)的更多相关文章

  1. 素数回文(dfs,有bug)

    素数回文 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  2. 4N - 素数回文

    xiaoou33对既是素数又是回文的数特别感兴趣.比如说151既是素数又是个回文.现在xiaoou333想要你帮助他找出某个范围内的素数回文数,请你写个程序找出 a 跟b 之间满足条件的数.(5 &l ...

  3. F题 hdu 1431 素数回文

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1431 素数回文 Time Limit: 2000/1000 MS (Java/Others)    M ...

  4. 题解报告:hdu 1431 素数回文

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1431 Problem Description xiaoou33对既是素数又是回文的数特别感兴趣.比如说 ...

  5. 12--c完数/最大公约数/最小公倍数/素数/回文数

    完数/最大公约数/最小公倍数/素数/回文数 2015-04-08 10:33 296人阅读 评论(0) 收藏 举报  分类: C/C++(60)  哈尔滨工业大学(8)  版权声明:本文为博主原创文章 ...

  6. hdu 1431 素数回文(暴力打表,埃托色尼筛法)

    这题开始想时,感觉给的范围5 <= a < b <= 100,000,000太大,开数组肯定爆内存,而且100000000也不敢循环,不超时你打我,反正我是不敢循环. 这题肯定得打表 ...

  7. NOI-OJ 1.13 ID:5 素数回文数的个数

    整体思路 使用埃拉拖色尼算法提前计算出1000以内的素数表. 设计一个回文判断函数isHW(int n),难点在于数字回文的判断.一个简单的方法是将数字n使用sprintf输出在一个数组中,然后从数组 ...

  8. HDU 1431 素数回文 离线打表

    题目描述:给定一个区间,将这个区间里所有既是素数又是回文数的数输出来. 题目分析:这题的这个数据范围比较大,达到了10^8级别,而且输入的数据有多组,又因为判断一个数是否是回文数貌似只有暴力判断,时间 ...

  9. HDU 1431 素数回文

    有人问我这个问题. 个人感觉暴搜会TLE O(n*sqrt(n)).n=100000000:(推断素数用2~sqrt(n)+1 去除) 还是枚举好了. 枚举 1~10000,把他每一位存下来,回文数已 ...

随机推荐

  1. springboot + mybatis + 多数据源

    此文已由作者赵计刚薪授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验 在实际开发中,我们一个项目可能会用到多个数据库,通常一个数据库对应一个数据源. 代码结构: 简要原理: 1) ...

  2. Java Calender 类详解

    一.   如何创建 Calendar 对象 Calendar 是一个抽象类, 无法通过直接实例化得到对象. 因此, Calendar 提供了一个方法 getInstance,来获得一个Calendar ...

  3. Android在onCreate中获取控件的宽高

    在某些需求下,我们需要在onCreate的时候就获取到控件的宽高,但是如果直接用view.getWidth()或view.getHeight()会得到0.这是因为在onCreate执行的时候,控件还没 ...

  4. 跟着刚哥学Redis

    NoSQL 简介 NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL".是对不同于传统的关系型数据库的数据库管理系统的统称.它泛指非关系型的数据库.随着 ...

  5. 一步一步教你用 Vue.js + Vuex 制作专门收藏微信公众号的 app

    一步一步教你用 Vue.js + Vuex 制作专门收藏微信公众号的 app 转载 作者:jrainlau 链接:https://segmentfault.com/a/1190000005844155 ...

  6. TCPDUMP学习笔记。

    1.启动 普通情况下,直接启动tcpdump将监视第一个网络界面上所有流过的数据包,注意这里使用超级用户.当用户上网得时候,就会将监视得数据打印出来. 我没使用root用户,结果输入tcpdump命令 ...

  7. 机器学习与Tensorflow(3)—— 机器学习及MNIST数据集分类优化

    一.二次代价函数 1. 形式: 其中,C为代价函数,X表示样本,Y表示实际值,a表示输出值,n为样本总数 2. 利用梯度下降法调整权值参数大小,推导过程如下图所示: 根据结果可得,权重w和偏置b的梯度 ...

  8. tcpdump命令抓包参数

    在 Linux 命令行中使用 tcpdump 抓包 通过实例学习tcpdump命令 聊聊 tcpdump 与 Wireshark 抓包分析 tcpdump常用参数 -n 显示IP地址和端口号 -v 显 ...

  9. [Leetcode]123.买卖股票的最佳时机3

    [原题链接][https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-iii/] 分析:动态规划+二分法.以第i天为分界线,计 ...

  10. 课程一(Neural Networks and Deep Learning),第四周(Deep Neural Networks) —— 3.Programming Assignments: Deep Neural Network - Application

    Deep Neural Network - Application Congratulations! Welcome to the fourth programming exercise of the ...