PTA 7-236 验证哥德巴赫猜想
分数 10
作者 usx程序设计类课程组
单位 绍兴文理学院
哥德巴赫猜想之一是指一个偶数(2除外)可以拆分为两个素数之和。请验证这个猜想。
因为同一个偶数可能可以拆分为不同的素数对之和,这里要求结果素数对彼此最接近。
输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试输入1个偶数n(6≤n≤10000)。
输出格式:
对于每组测试,输出两个彼此最接近的素数a、b(a≤b),两个素数之间留1个空格。
输入样例:
2
30
40
输出样例:
13 17
17 23
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include <stdio.h>
int prime(int n){ //判断是否是素数
int flag = 0; //默认是素数
for(int i = 2; i < n; i++){
if(n % i == 0){
flag = 1;
}
}
return flag;
}
int main(){
int group; //测试数据组
scanf("%d", &group);
int inte;
int count = 0; //记录测试组数
loop: for(int i = 1; i <= group; i++){ //循环测试组数;设置标签(loop)方便goto函数跳转
if(count == group) //循环结束标志
return 0;
scanf("%d", &inte); //输入整数
for(int i = inte / 2; i > 1; i--){
if(prime(i) == 0){ //判断i是否素数
for(int j = inte / 2; j < inte; j++){
if(i + j == inte && prime(j) == 0){
printf("%d %d\n", i, j);
count++;
goto loop; //跳转
}
}
}
}
}
return 0;
}
解题思路:
step1:每组测试输入一个偶数,从该数的中间拆分,一个加,另一个减;
step2:判断拆分的两个数是否素数且相加等于该偶数
step3:满足条件就输出
归属知识点:
循环结构
条件筛选
goto的用法