哥德巴赫猜想之一是指一个偶数(2除外)可以拆分为两个素数之和。请验证这个猜想。
因为同一个偶数可能可以拆分为不同的素数对之和,这里要求结果素数对彼此最接近。
输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试输入1个偶数n(6≤n≤10000)。
输出格式:
对于每组测试,输出两个彼此最接近的素数a、b(a≤b),两个素数之间留1个空格。
输入样例:
2
30
40
输出样例:
13 17
17 23
#include<stdio.h>
#include<math.h>
int isprime(int a)//判断是否是素数
{
if(a==1) return -1;
if(a==2) return 1;
for(int i=2;i<=sqrt(a);i++)
{
if(a%i==0) return -1;
}
return 1;
}
int main()
{
int n = 0;
scanf("%d",&n);
int su=0;
int cha =0;
int answer = 0;
for(int i=0;i<n;i++)
{
scanf("%d",&su);
int min =su;
if(su==6)
{answer =3;}
else{
for(int j=2;j<su;j++)
{
if(isprime(j)==1&&isprime(su-j)==1)
{
cha =su-2*j;
if(cha<min&& cha>0){
min = cha;
answer=j;
}
}
}
}
printf("%d %d\n",answer,su-answer);
} return 0;
}