显示原始代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int pd(long int n) {
long int i, j;
if (n % 2 == 0)
return 0;
if (n % 3 == 0)
return 0;
for (i = 5, j = 7; i < sqrt(n), j < sqrt(n); i = i + 6, j = j + 6) {
if (n % i == 0)
return 0;
if (n % j == 0)
return 0;
}
return 1;
}
int fact(long int arr[]) {
long int n = 10000000;
int j = 0;
long int i;
for (i = 3; i < n; i = i + 2) {
if (pd(i)) {
arr[j] = i;
j++;
}
}
return j;
}
int nn(long int arr[], long int n, int j) {
int i;
for (i = 0; i < j; i++) {
if (arr[i] == n)
return 1;
}
return 0;
}
int main() {
int t = 0;
int i;
scanf("%d", &t);
long int n;
long int arr[5000000];
int len = fact(arr);
for (i = 0; i < t; i++) {
scanf("%ld", &n);
long int j = 0;
long int x;
while (1) {
x = arr[j];
if (nn(arr, n - x, len))
break;
else {
j++;
}
}
printf("%ld %ld", x, n - x);
}
}