思路
- 明确什么是素数:只能被1和它本身整除的数为素数
- 得到输入数据的所有素数,注意相同的素数存2次。如:4由2和2组成,2需要存2次
- 比较组合找到最小的素数之差,将最小的差存起来
- 循环结束后输出
Answer
#include<stdio.h>
int main() {
int val;
int num[1000];
scanf("%d", &val);
int i, j;
int pre;
int next;
int max = 10000;
int k = 0;
//得到素数
for (i = 1; i <= val; i++) { //1是素数从2开始
int flg = 0;
for (j = 2; j < i; j++) { //和2-本身-1取余有0则不为素数
if ((i % j) == 0) {
flg = 1; //不是素数
}
}
if (flg == 0) {
num[k++] = i;
if (val == (i * 2)) {
num[k++] = i;
}
}
}
//比较组合找到最小的素数之差
for (int i = 1; i < k; i++) {
for (int j = i + 1; j < k; j++) {
if (num[i] + num[j] == val) {
if ((num[j] - num[i]) < max) {
max = num[j] - num[i];
pre = num[i];
next = num[j];
}
}
}
}
printf("%d\n", pre);
printf("%d\n", next);
return 0;
}