其他分享
首页 > 其他分享> > 计蒜客 A2238 找质数

计蒜客 A2238 找质数

作者:互联网

题目

一天蒜头君猜想,是不是所有的偶数(除了 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 为偶数。

Sample 1

InputcopyOutputcopy
3
4
8
20
2 2
3 5
3 17

 解析:

        这道题我用到的是筛法找质数,然后在[l,r]区间内循环然后判断两个数是否都为质数

 AC代码

#include<stdio.h>
#include<iostream>
using namespace std;
int a[1000005];
//筛法找素数
void prime()
{
	int i,j;
	for(i=0;i<=1000000;i++)
		a[i]=1;
	a[0]=a[1]=0;
	for(i=2;i<=1000;i++)
	{
		if(a[i]==1)
		{
			for(j=i*2;j<=1000000;j=j+i)
			{
				a[j]=0;
			}
		}
	}
}
int main()
{
	prime();
	int t,n;
	scanf("%d",&t);
	while(t--)
	{
		scanf("%d",&n);
		for(int i=2;i<=n/2;i++)
		{
			if(a[i]==1&&a[n-i]==1)
			{
				printf("%d %d\n",i,n-i);
				break;
			}
		}
	}
	return 0;
}

努力努力再努力

标签:10,le,int,106,质数,A2238,整数,计蒜客
来源: https://blog.csdn.net/zz_xun/article/details/123611873