HOJX-1004
来源:互联网 发布:淘宝网男包包 编辑:程序博客网 时间:2024/06/16 02:23
题目
The number 151 is a prime palindrome because it is both a prime number and a palindrome (it is the same number when read forward as backward). Write a program that finds all prime palindromes in the range of two supplied numbers a and b (5 <= a < b <= 1000,000,000); both a and b are considered to be within the range .
Time limit : 15 s Memory limit : 32 mb
重点
b的上限为1000000000,使用筛法建立数组会超过内存限制。
解决
题目即要求回文数又要求素数,因此通过合理构造回文数,减少循环次数。
代码
#include<stdio.h>#include<stdlib.h>#include<math.h>int isPrime(int n) { if (n % 2) { for (int i = 3; i <= sqrt(n); i += 2) { if (!(n % i)) { return 0; } } return 1; } return 0;}int getPalindrome() { //用于创建回文数的生成器 static int num[] = { 0, 0, 0, 0, 0 }; num[4] += 1; for (int i = 4; i > 0; i--) { if (num[i] == 10) //进位 { num[i] = 0; num[i - 1]++; } } if (num[0] == 10) { return -1; //停止创建 } int res = num[0] * 100000000 + num[1] * 10000000 + num[2] * 1000000 + num[3] * 100000 + num[4] * 10000 + num[3] * 1000 + num[2] * 100 + num[1] * 10 + num[0]; while (res % 10 == 0) { res /= 10; } return res;}int main() { int a, b; scanf("%d %d", &a, &b); int num; do { num = getPalindrome(); if (num >= a && isPrime(num)) { //会漏掉11 if (num == 101) { printf("11\n"); } printf("%d\n", num); } } while (num <= b && num!=-1); return 0;}
阅读全文
0 0
- HOJX-1004
- hojx triangles(题号之后补
- [1004]
- 1004
- 1004
- 1004
- 1004
- 1004
- 1004
- 1004
- 1004
- 1004
- 1004
- 1004
- 1004
- 1004
- 1004
- 1004
- Linux文本处理三剑客之sed
- 几个框架的责任链设计模式简析
- Python Socket 编程
- Android输入系统概述
- 【Android】EventBus 3.0 源码分析
- HOJX-1004
- UVA 442
- java实现二叉树的创建和各种遍历操作
- InputManagerService服务的初始化
- Lintcode删除排序链表中的重复元素
- C++学习,变量和基本类型
- MiXinJiang Professor of Langfang Teachers College
- Java 循环结构
- 51nod 1280 前缀后缀集合