
注意使用scanf,printf输入输出
#include<bits/stdc++.h>
using namespace std;
bool st[1000010];
int prime[1000010];
int cnt;
int main()
{
for(int i=2;i<1000000;i++)
{
if(!st[i])prime[cnt++]=i;
for(int j=0;prime[j]<=1000000/i;j++)
{
st[prime[j]*i]=true;
if(i%prime[j]==0)break;
}
}
int t;
scanf("%d",&t);
while(t--)
{
int n;
scanf("%d",&n);
for(int i=2;i<=1000000;i++)
{
if(!st[i]&&!st[n-i])
{
printf("%d %d\n",i,n-i);
break;
}
}
}
return 0;
}
这段代码实现了一个寻找不超过100万的质数数组,并用于查找给定整数n的互补质数对。程序使用了埃拉托斯特尼筛法生成质数,并在O(sqrt(n))时间内找到互补质数对。
1213

被折叠的 条评论
为什么被折叠?



