题目描述
素数,又称质数,是指除 1 和其自身之外,没有其他约数的正整数。例如 2,3,5,13 都是素数,而 4,9,12,18 则不是。特别地,规定 1 不是素数(因此自然数的质因数分解就是唯一的)。
如果一个数本身是素数,并且把最低位删除后得到的数仍是素数、再把最低位删除后得到的数仍是素数……如此往复,直到得到一个一位素数,我们就称它是“幸运素数”。以 233 为例:
- 233 本身是素数;
- 23=⌊233/10⌋是素数;
- 2=⌊23/10⌋ 是素数。
因此 233 是“幸运”素数。而 211 则不是幸运素数:虽然 211 是素数,但 211 不是素数。请编程求出一定范围内的所有幸运数字。
输入格式
输入一行两个用空格分隔的正整数 m,n,表示我们希望求幸运素数的范围。
输出格式
从小到大输出 m,m+1,m+2,⋯ ,n 中所有的幸运素数,每行输出一个。
输入数据 1
6 30
输出数据 1
7
23
29
提示
对于 100% 的测试数据,有 1≤m≤n≤9999。
代码展示
#include <bits/stdc++.h>
using namespace std;
bool Prime(int n){
for(int i=2;i*i<n+1;i++){
if(n%i==0){
return 0;
}
}
return 1;
}
int Salvage(int a){
while(a!=0)
{
if(Prime(a)==0){
return 0;
}
else a=a/10;
if(a==1) return 0;
}
if(a==0){
return 1;
}
}
int main()
{
int n,m;
cin>>n>>m;
for(int i=n;i<=m;i++){
if(Salvage(i)==1&&i!=1){
cout<<i<<endl;
}
}
return 0;
}
谢谢观看!!