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;
}