题目描述
输入要求
输出要求
输入样例
输出样例
int gdbh(int n){
int i,j,k=0,zx,min=0;
int a[10000],b[10000],c[10000];
for(i=2;i<n;i--){
if(szs(i)){
for(j=2;j<n;j++){ //嵌套循环找出质数
if(szs(j)){
if(i+j==n&&i<=j){
a[k]=i;
b[k]=j;
c[k]=fabs(i-j); //i-j的绝对值数组找出差最小的结果
k++;
}
}
}
}
}
min=c[0];
for(i=1;i<k;i++){ //遍历找出结果最小的数组
if(c[i]<=min){
min=c[i];
zx=i; //记录最小结果的位置
}
}
printf("%d %d",b[zx],c[zx]);
}
#include<stdio.h>
#include<math.h>
int szs(int x){
int i,k=0;
for(i=2;i<x;i++){
if(x%i==0){
k++;
}
}
if(k!=0) return 0;
else return 1;
}
int gdbh(int n){
int i,j;
int k=0,dd,xd;
for(i=n/2;i>0;i--){ //当数据很大时,会超时
if(szs(i)){ //当结果处于中间时也是差最小
j=n-i; //减少一个循环
if(szs(j)){
if(i+j==n&&i<=j){ //第一个结果就是差最小的结果
printf("%d %d\n",i,j);
return 0;
}
}
}
}
}
int main(){
int n;
scanf("%d",&n);
gdbh(n);
return 0;
}