2020oj14(8)

描述

一个六位正整数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;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值