哥德巴赫猜想之一是指一个偶数(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 s(int n) //判断素数函数
{
for (int i = 2; i <= sqrt(n); i++)
{
if (n % i == 0)
return 0;
}
return 1;
}
int main()
{
int n, t;
scanf("%d", &t);
for (int i = 1; i <= t; i++)
{
int count = 0, a[10000] = { 0 }, b[10000] = { 0 }, c[10000] = { 0 };
scanf("%d", &n);
for (int j = 3; j <= n / 2; j += 2)
{
if (s(j) && s(n - j))
{
count++;
a[count] = n - j - j;
b[count] = j;
c[count] = n - j;
}
}
int min = a[1];
for (int k = 2; k <= count; k++)
if (a[k] < min)
min = a[k];
for (int l = 1; l <= count; l++)
{
if (min == a[l])
{
printf("%d %d", b[l], c[l]);
break;
}
}
printf("\n");
}
return 0;
}