USACO 回文素数
来源:互联网 发布:蒙顶甘露 知乎 编辑:程序博客网 时间:2024/06/16 13:39
输出【a,b】间既是回文数,又是素数的个数(5 <= a < b <= 10^8)
素数筛选法 枚举素数判断是否回文,超时超空间。所以可以先判断回文,再判断素数,因为回文数数量比素数少,但还是要开大数组。
所以用其他方法:除2外偶数肯定不是素数,除5外5结尾的肯定不是素数,除11外数字长度为偶数的不会同时是素数和回文数,因为是回文数的会被11整除
一个很大的优化是:从偶数长度的数跳到奇数长度的数,如判断1100不合条件,直接跳到10001判断
大量参考别人的博客
#include<stdio.h>int ishuiwen(int i){//判断回文int m,n;n = i;m = 0;while(n){m = m * 10 + n % 10;n /= 10;}if(m == i)return 1;return 0;}int isprime(int m){int i;for(i=3;i*i<=m;i+=2){//+=2直接避开偶数if( m % i ==0 )return 0;}return 1;}int word_len(int x){//求数字长度int res = 0;while(x){res++;x /= 10;}return res;}int ten_up(int m){//变下一个10的倍数int i,s = 10;//求10^mfor(i=1;i<m;i++)s*=10;return s;}int main(){int i,l,r,count;//freopen("in.txt","r",stdin);int len;while(scanf("%d%d",&l,&r)!=EOF){count = 0;for(i=l;i<=r;i++){if( i % 2 == 0 && i != 2 )//除2外偶数不是素数continue;if( i % 5 == 0 && i != 5)//除5外5倍数不是素数continue;if(!ishuiwen(i))continue;len = word_len(i);if( len % 2 == 0 && i != 11){//除11外数字长度为偶数的不是回文数i = ten_up(len);//这招牛,从偶数长度跳到奇数长度continue;//下一轮是因为i++到了101之类带1而不是0结尾的}if(isprime(i))count++;}printf("%d\n",count);}return 0;}
0 0
- USACO 回文素数
- Miller Rabin 算法验证素数 USACO 1.5 回文质数
- USACO 1.5 PROB Prime Palindromes <构造回文+素数判定>
- USACO-Prime Palindromes(部分筛法判素数,回文数生成)
- USACO-section1.5 Prime Palindromes[回文数][素数]
- 素数回文
- 回文素数
- 回文素数
- 回文素数
- 回文素数
- 回文素数
- 【素数回文】
- 回文素数
- 素数回文
- 回文素数
- 回文素数
- 回文素数
- 回文素数
- Java序列化中的serialVsersionUID
- 这周dp(POJ-2229)
- 08-2. 求矩阵的局部极大值(15)
- UVA 11769 All Souls Night 三维凸包求表面积
- Servlet第五课:Cookie的使用
- USACO 回文素数
- 在presentModalViewController中使用UINavigationController
- UVA 12086 - Potentiometers(树状数组)
- 每日 swift 学习 (控制语句)
- mini2440上一步步实现将ADS工程移植到keil MDK(附移植好的完整代码)
- 暑假第二十天,7月26号
- UVA 11770 Lighting Away 强连通缩点+拓扑排序
- Hibernate中离线查询DetachedCriteria案例
- Servlet基础