Openjudge 1.13-23:区间内的真素数(每日一水)

总时间限制: 
1000ms

内存限制: 
65536kB
描述

找出正整数 M 和 N 之间(N 不小于 M)的所有真素数。

真素数的定义:如果一个正整数 P 为素数,且其反序也为素数,那么 P 就为真素数。
例如,11,13 均为真素数,因为11的反序还是为11,13 的反序为 31 也为素数。

输入
输入两个数 M 和 N,空格间隔,1 <= M <= N <= 100000。
输出
按从小到大输出 M 和 N 之间(包括 M 和 N )的真素数,逗号间隔。如果之间没有真素数,则输出 No。
样例输入
10 35
样例输出
11,13,17,31
来源
元培-From Whf

一如既往的发一道水题,只有水题能捡起自信。。

#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>

using namespace std;

char s[11412];
int n,m,i,j;
int pd(int k)
{
    for(j=2;j<=sqrt(k);++j)
    if(k%j==0) return 0;
    return 1;
}
int zc(int w)
{
    int h=0;
    sprintf(s,"%d",w);
    for(int l=strlen(s)-1;l>=0;l--)
    {
        if(l==strlen(s)-1) h=int(s[l]-48);
        else h=h*10+int(s[l]-48);
    }
    if(pd(h)) return 1;
}
int main()
{
    ios::sync_with_stdio(false);
    bool flag=false;
    cin>>n>>m;
    for(i=n;i<=m;++i)
    {
        if(pd(i))
        {
            if(zc(i)) {
                if(!flag) {
                    cout<<i;
                    flag=true;
                }
                else cout<<","<<i;
            }
        }
    }
    if(!flag) cout<<"No";
    return 0;
}

时间: 2024-10-11 17:27:47

Openjudge 1.13-23:区间内的真素数(每日一水)的相关文章

23:区间内的真素数

23:区间内的真素数总时间限制: 1000ms 内存限制: 65536kB描述找出正整数 M 和 N 之间(N 不小于 M)的所有真素数. 真素数的定义:如果一个正整数 P 为素数,且其反序也为素数,那么 P 就为真素数.例如,11,13 均为真素数,因为11的反序还是为11,13 的反序为 31 也为素数. 输入输入两个数 M 和 N,空格间隔,1 <= M <= N <= 100000.输出按从小到大输出 M 和 N 之间(包括 M 和 N )的真素数,逗号间隔.如果之间没有真素数,

区间内的真素数

11:区间内的真素数 找出正整数 M 和 N 之间(N 不小于 M)的所有真素数. 真素数的定义:如果一个正整数 P 为素数,且其反序也为素数,那么 P 就为真素数.例如,11,13 均为真素数,因为11的反序还是为11,13 的反序为 31 也为素数. 输入 输入两个数 M 和 N,空格间隔,1 <= M <= N <= 100000. 输出 按从小到大输出 M 和 N 之间(包括 M 和 N )的真素数,逗号间隔.如果之间没有真素数,则输出 No. 样例输入 10 35 样例输出 1

1411区间内的真素数

题目链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1411 1 #include<iostream> 2 #include<cstdio> 3 #include<cmath> 4 using namespace std; 5 int m,n; 6 //iss(int x)函数的功能:判断x是否是素数 7 bool iss(int x) 8 { 9 for(int i=2;i*i<=x;i++) 10 { 11

PKUOJ 区间内的真素数

http://bailian.openjudge.cn/tm2018/A/ #include <iostream> #include <math.h> #include <string> #include <algorithm> #include <sstream> using namespace std; bool isPrime(int n) { for (int i = 2; i <=sqrt(n); i++) { if (n%i =

1411:区间内的真素数

这个题一开始的想法是定义两个函数,一个用来判断素数,另一个用来将输入的数做反序处理,再次判断是否为素数. 定义一个一维数组,用来存储符合题目条件的数.用一个计数器,来控制输入数组时的下标. 1 int m,n,i,k=0; 2 cin>>m>>n; 3 for(i=m; i<=n; i++) 4 if( a(i) && a(b(i)) ) 5 { 6 k++; 7 c[k]=i; 8 } 在定义反序函数时,有点困难,对我来说还是有难度的: 1 int b(in

给出一个区间[a, b],计算区间内“神奇数”的个数。 神奇数的定义:存在不同位置的两个数位,组成一个两位数(且不含前导0),且这个两位数为质数。 比如:153,可以使用数字3和数字1组成13,13是质数,满足神奇数。同样153可以找到31和53也为质数,只要找到一个质数即满足神奇数。

给出一个区间[a, b],计算区间内"神奇数"的个数.神奇数的定义:存在不同位置的两个数位,组成一个两位数(且不含前导0),且这个两位数为质数.比如:153,可以使用数字3和数字1组成13,13是质数,满足神奇数.同样153可以找到31和53也为质数,只要找到一个质数即满足神奇数. 输入描述: 输入为两个整数a和b,代表[a, b]区间 (1 ≤ a ≤ b ≤ 10000). 输出描述: 输出为一个整数,表示区间内满足条件的整数个数 输入例子: 11 20 输出例子: 6 1 #in

洛谷1440 求m区间内的最小值

本题地址:http://www.luogu.org/problem/show?pid=1440 题目描述 一个含有n项的数列(n<=2000000),求出每一项前的m个数到它这个区间内的最小值.若前面的数不足m项则从第1个数开始,若前面没有数则输出0. 输入输出格式 输入格式: 第一行两个数n,m. 第二行,n个正整数,为所给定的数列. 输出格式: n行,第i行的一个数ai,为所求序列中第i个数前m个数的最小值. 输入输出样例 输入样例#1: 6 2 7 8 1 4 3 2 输出样例#1: 0

【hdu5381】维护区间内所有子区间的gcd之和-线段树

题意:给定n个数,m个询问,每次询问一个区间内所有连续子区间的gcd的和.n,m<=10^5 题解: 这题和之前比赛的一题很像.我们从小到大枚举r,固定右端点枚举左端点,维护的区间最多只有log段.为什么?以为长区间的gcd肯定是短区间gcd的约数,并且要是不同的话至少要/2,最多那就只有log数值这么多段.还有,相同gcd的区间一定是连续的若干个(想想gcd是怎么求的就知道了).线段树每个端点x维护的是以x为左端点,r从1到当前的r的gcd的和.链表维护log段数,然后每次加到线段树里更新.

HDU 3264 区间内的最大最小之差

题目链接:http://poj.org/problem?id=3264 题目大意:在给定一堆牛的数量以及其高度的时候,每次给定一段区间,求这个区间内最高的牛和最矮的牛的高度之差为多少. 这道题目用线段树能快速的求解,因为此处不涉及更新,所以无需写update函数 不同于之前只定义一个tree数组,这回我们需要定义一个Max和一个Min数组分别子弟想存放较大和较小值 通过query找到区间内的最大值q,和最小值p,那么q-p便是我们所求的 1 #include <iostream> 2 #inc