学习C++从娃娃抓起!记录下在学而思小猴编程学习过程中的题目,记录每一个瞬间。侵权即删,谢谢支持!
附上汇总贴:小猴编程C++ | 汇总-CSDN博客
【题目描述】
质数,又称素数,是指除 1 和其自身之外,没有其他约数的正整数。例如 2,3,5,13 都是质数,而 4,9,12,18 则不是。特别地,规定 1 不是质数(因此自然数的质因数分解就是唯一的)。
一个数如果满足以下条件,就被称为“超质数”:
- 它本身是质数;
- 每次删除最低位后得到的数仍是质数,直到最后得到一个一位质数。
例如,7331 本身就是质数,删除最低位的 1 之后得到的数 733 也是质数,再删除最低位的 3 之后得到的数 73 也是质数,再删除最低位的 3 之后得到的数 7 也是质数。
因此, 7331 就是一个“超质数”。
现在给定两个整数 a,b,请你输出 a∼b 之间所有的“超质数”,每行一个。
【输入】
一行,包含两个整数 a,b。
【输出】
输出 a∼b 之间所有的“超质数”,每行一个。如果 a∼b 之间没有任何的“超质数”,则输出 −1。
【输入样例】
6 30
【输出样例】
7
23
29
【代码详解】
#include <bits/stdc++.h>
using namespace std;
bool isPrime(int x)
{
if (x<2) return false;
for (int i=2; i*i<=x; i++) {
if (x%i==0) return false;
}
return true;
}
bool chk(int x)
{
while(x>0) {
if (isPrime(x)==false) return false;
x /= 10;
}
return true;
}
int main()
{
int a, b, flag = true;
cin >> a >> b;
for (int i=a; i<=b; i++) {
if (chk(i)==true) {
cout << i << endl;
flag = false;
}
}
if (flag==true) cout << -1 << endl;
return 0;
}
【运行结果】
6 30
7
23
29