hi.幸运素数

[信息与未来 2019] 幸运素数

题目描述

素数,又称质数,是指除 1 1 1 和其自身之外,没有其他约数的正整数。例如 2 , 3 , 5 , 13 2,3,5,13 2,3,5,13 都是素数,而 4 , 9 , 12 , 18 4,9,12,18 4,9,12,18 则不是。特别地,规定 1 1 1 不是素数(因此自然数的质因数分解就是唯一的)。

如果一个数本身是素数,并且把最低位删除后得到的数仍是素数、再把最低位删除后得到的数仍是素数……如此往复,直到得到一个一位素数,我们就称它是“幸运素数”。以 233 233 233 为例:

  • 233 233 233 本身是素数;
  • 23 = ⌊ 233 10 ⌋ 23=\lfloor\dfrac{233}{10}\rfloor 23=10233 是素数;
  • 2 = ⌊ 23 10 ⌋ 2=\lfloor\dfrac{23}{10}\rfloor 2=1023 是素数。

因此 233 233 233 是“幸运”素数。而 211 211 211 则不是幸运素数:虽然 211 211 211 是素数,但 21 21 21 不是素数。请编程求出一定范围内的所有幸运数字。

输入格式

输入一行两个用空格分隔的正整数 m , n m,n m,n,表示我们希望求幸运素数的范围。

输出格式

从小到大输出 m , m + 1 , m + 2 , ⋯   , n m,m+1,m+2,\cdots,n m,m+1,m+2,,n 中所有的幸运素数,每行输出一个。

样例 #1

样例输入 #1

6 30

样例输出 #1

7
23
29

提示说明

对于 100 % 100\% 100% 的测试数据,有 1 ≤ m ≤ n ≤ 9999 1\le m\le n\le 9999 1mn9999

本题原始满分为 15 pts 15\text{pts} 15pts

代码内容

// #include <iostream>
// #include <algorithm>
// #include <cstring>
// #include <vector>//容器,存数组的数,表数组的长度
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
const ll N=1e5+10;

ll adjust(ll i)
{
    ll x,j;
    x=(int)sqrt(i);
    for(j=2;j<=x;j++)
    {
        if(i%j==0)
            break;
    }
    if(j>x&&i>1) return 1;

    return 0;
}


int main()
{
    ll m,n;
    cin>>m>>n;

    for(ll i=m;i<=n;i++)
    {
        ll x,j,temp;
        temp=i;
        ll index;
        while(temp>0)
        {
            index=adjust(temp);
            if(index==0) break;
            temp/=10;
        }
        if(index==1)
            cout<<i<<endl;
    }
    return 0;
}
    
  • 19
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pretty Boy Fox

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值