zoukankan      html  css  js  c++  java
  • P1217 [USACO1.5]回文质数 Prime Palindromes

    题目描述

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

    写一个程序来找出范围 [a,b] (5≤a<b≤100,000,000)( 一亿)间的所有回文质数。

    输入格式

    第 1 行: 二个整数 a 和 b .

    5 500

    输出格式

    5
    7
    11
    101
    131
    151
    181
    191
    313
    353
    373
    383

    说明与提示

    Hint 1: Generate the palindromes and see if they are prime.

    提示 1: 找出所有的回文数再判断它们是不是质数(素数).

    Hint 2: Generate palindromes by combining digits properly. You might need more than one of the loops like below.

    提示 2: 要产生正确的回文数,你可能需要几个像下面这样的循环。

    题目翻译来自NOCOW。

    思路:题目需要实现的功能非常简单,但需要注意的是该题目有“高性能”的tag,这意味着在时间或空间方面有所要求,实现起来要注意优化。素数筛选可以使用欧拉线筛或埃式线筛。

    Code

    #include <bits/stdc++.h>
    #include <algorithm>
    #define PI 3.141593
    #define INF 0x3f3f3f3f
    #define Best 0x7fffffff
    #define _CRT_SECURE_NO_WARNINGS
    
    using namespace std;
    
    const int M = 2e8 + 5;
    bool S(long long int num) {
    	if (num <= 3) {
    		return num > 1;
    	}
    	if (num % 6 != 1 && num % 6 != 5) {
    		return 0;
    	}
    	int b = (long long int)sqrt(num);
    	for (int i = 5; i <= b; i += 6) {
    		if (num % i == 0 || num % (i + 2) == 0) {
    			return 0;
    		}
    	}
    	return 1;
    }
    
    bool H(long long int num) {
    	long long int temp, sum = 0;
    	temp = num;
    
    	while (temp != 0) {
    		sum = sum * 10 + temp % 10;
    		temp = temp / 10;
    	}
    	if (sum == num && num > 0)
    	{
    		return 1;
    	}
    	else
    	{
    		return 0;
    	}
    }
    
    int main() {
    	long long int a[M], n = 0, s = 0, b, c;
    	cin >> b >> c;
    	for (long long int i = b; i <= c; i++) {
    		a[i] = i;
    		if (a[i] == 10000000)
    			break;
    		if (H(a[i]) == 1 && S(a[i]) == 1) {
    			n++;
    			cout << a[i] << endl;
    		}
    	}
    	return 0;
    }
    
  • 相关阅读:
    C++中重载、重定义、重写概念辨析
    虚函数,抽象函数
    取出一个int的每一位,用算法
    Typedef和define
    枚举
    基于 ThinkPHP 3.2.3 的页面静态化功能的实现
    骑行在华盛顿 针对320万次共享单车骑行数据的分析
    骑行在华盛顿 针对320万次共享单车骑行数据的分析
    分析了10个垂直行业后,告诉你大数据应用面临哪些挑战
    分析了10个垂直行业后,告诉你大数据应用面临哪些挑战
  • 原文地址:https://www.cnblogs.com/RpgMaker/p/13605489.html
Copyright © 2011-2022 走看看