C语言实现哥德巴赫猜想
C语言实现哥德巴赫猜想
大家好,今天我们来用c语言实现哥德巴赫猜想。由于本人c语言刚学了2个月,写的代码如果有疏漏之处,还望大家海涵!
不含注释的代码
#include<stdio.h>
int main(void)
{
int n;
int a=0,x,fw1,zs1=0;
int b=0,y,fw2,zs2=0;
printf("请输入请输入哥德巴赫猜想中的偶数:");
scanf("%d",&n);
for(fw1=3;fw1<n/2;fw1++)
{
a=0;
for(x=2;x<fw1;x++)
{
if(fw1%x==0)
{
a=1;
}
if(1!=a&&x==fw1-1)
{
zs1=fw1;
for(fw2=3;fw2<n;fw2++)
{
b=0;
for(y=2;y<fw2;y++)
{
if(fw2%y==0)
{
b=1;
}
if(1!=b&&y==fw2-1)
{
zs2=fw2;
if(zs1+zs2==n)
{
printf("%d=%d+%d\n",n,zs1,zs2);
}
}
}
}
}
}
}
return 0;
}
含有注释的代码
#include<stdio.h>
int main(void)
{
int n; //n为哥德巴赫猜想中的偶数
int a=0,x,fw1,zs1=0; //a,x,fw1为外层循环寻找[3,n/2)内的质素用到的变量,zs1是第一组中寻找到的质素
int b=0,y,fw2,zs2=0; //b,y,fw2为内层循环寻找[3,n)内的质素用到的变量,zs2是第二组中寻找到的质素
printf("请输入请输入哥德巴赫猜想中的偶数:");
scanf("%d",&n);
for(fw1=3;fw1<n/2;fw1++) //外层循环,寻找【3,n/2)之内的质素
{
a=0;
for(x=2;x<fw1;x++) //x的范围是(2,fw1),目的是下面让fw1%x,如果结果均不为0,说明fw1是质素
{
if(fw1%x==0)
{
a=1;
}
if(1!=a&&x==fw1-1) //1!=a是说明fw1%x不为0,x=fw1-1是保证fw1%x中的x能够把x范围内的数全部执行一遍,只有x范围内的数全部符合fw1%x不等0,才能保证fw1是质素
{
zs1=fw1; //在【3,n/2)内寻找到了质素zs1
for(fw2=3;fw2<n;fw2++) //在第一组寻找质素里嵌套上第二组寻找质素,第一组找到1个质素后zs1后执行第二组寻找质素zs2
{
b=0;
for(y=2;y<fw2;y++)
{
if(fw2%y==0)
{
b=1;
}
if(1!=b&&y==fw2-1)
{
zs2=fw2; //第二组成功在【3,n)内寻找到了质素zs2
if(zs1+zs2==n) //判断第一组的某个质素+第二组的某个质素是否等于n
{
printf("%d=%d+%d\n",n,zs1,zs2); //如果等于 输出该等式
}
}
}
}
}
}
}
return 0;
}