描述
一个六位正整数m,把m从中间切开,分成两个三位数a和b(例如123456从中间切开,分成了123和456)。
如果m、a、b都是素数,则称m是超级素数。
现在需要验证,x到y之间(包含x和y)有多少个这样的超级素数?(x<=y,且x和y都是六位数)
输入
一个正整数n,表示有n组案例。
每组案例由两个六位正整数x和y组成。(x<=y)
输出
针对每组案例,输出一个整数,表示x到y之间(包含x和y)超级素数的数量。
每组案例输出完都要换行。
样例输入
1
100000 999999
样例输出
3223
解决方案
//Boss.Yang. 2020.11.2
#include<iostream>
#include<cmath>
using namespace std;
bool isPrime(int a);
int main()
{
int n;
cin >> n;
while (n--)
{
int x, y, m, t, cnt = 0;
cin >> x >> y;
for (int i = x; i <= y; i++)
{
if (isPrime(i))
{
m = i / 1000;
t = i % 1000;
if (isPrime(m) && isPrime(t))
{
cnt++;
}
}
}
cout << cnt << endl;
}
}
bool isPrime(int a)
{
bool isP = true;
if (a < 2)
{
isP = false;
}
for (int k = 2; k <= sqrt(a); k++)
{
if (a % k == 0)
{
isP = false;
break;
}
}
return isP;
}