题目描述
所谓哥德巴赫猜想是指,任一大于2的偶数都可以写成两个质数之和(严格说来,这是欧拉的等价描述版本)。例如6=3+3,8=3+5,...,18=7+11。迄今为止,这仍然是一个著名的世界难题,被誉为数学王冠上的明珠。试编写程序,验证任一大于2的偶数都能写成两个质数之和。(可能有多种情况,请输出两数差最大的那组)
输入要求
输入一个大于2的偶数N。
输出要求
输出两个质数和的形式,小的质数在前,大的质数在后。
输入样例
16
输出样例
16=3+13
差最大的两个质数,有两个问题,一是差最大,一个是两个 质数
差最大可用两个循环
质数可利用函数减少代码量
#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;
for(i=2;i<n;i++){
if(szs(i)){
for(j=2;j<n;j++){
if(szs(j)){
if(i+j==n){
printf("%d=%d+%d\n",n,i,j); //利用函数输出第一个结果
return 0; //第一个结果差为最大
}
}
}
}
}
}
int main(){
int n;
scanf("%d",&n);
gdbh(n);
return 0;
}