2019 蓝桥杯省赛 B 组模拟赛(一) 程序设计:找质数 ( 埃氏筛法 筛选素数)

一天蒜头君猜想,是不是所有的偶数(除了 22),都可以用两个质数相加得到呢?于是聪明的蒜头君就找你来验证了。

输入格式

第一行输入一个整数 tt 表示测试组数。

接下来 tt 行,每行一个整数 nn。

输出格式

输出两个整数,因为答案可能有多个,所有要求输出的这两个整数是所有答案中字典序最小的。

数据范围

对于 30\%30% 的数据 1 le t le 10^31≤t≤103。

对于 60\%60% 的数据 1 le t le 10^51≤t≤105。

对于 100\%100% 的数据 1 le t le 10^6, 4 le n le 10^61≤t≤106,4≤n≤106,nn 为偶数。

样例输入复制

3
4
8
20

样例输出复制

2 2
3 5
3 17

题目来源

2019 蓝桥杯省赛 B 组模拟赛(一)

#include<iostream>
#include<cstring>
#include<string>
using namespace std;
bool vis[1000000+10];

int main()
{
	int n,m,j=0,k,i,T;
	memset(vis,true,sizeof(vis));
	for (i=2;i<=1000000;i++)
	{
		if (vis[i]==true)
		{
			for (j=i+i;j<=1000000;j+=i)
			vis[j] = false;
		}
	}
	scanf("%d",&T);
	while (T--)
	{
		scanf("%d",&n);
		for (i=2;;i++)
		{
			if (vis[i]==true && vis[n-i]==true)
			{
				printf("%d %d
",i,n-i);
				break;
			}
		}
	}
	
	return 0;
}
原文地址:https://www.cnblogs.com/Romantic-Chopin/p/12451157.html