C语言 验证“哥德巴赫猜想”

 

#include<stdio.h>
main()
{
	long i,j,k,p_i,p_j,flag_i,flag_j;
	scanf("%ld",&k);
	for(i=2;i<k;i++)        //产生第一个数字 
	{
    	for(j=2;j<k;j++)   //产生第二个数字 
    	{
    			flag_i=1;   
    			for(p_i=2;p_i<i;p_i++)   //判断第一个数字是否素数 
    			    if(i%p_i==0)
    			    {
    			    	flag_i=0;
    			    	break;
					}
					if(flag_i==1)        //若第一个数字为素数,进行判断第二数字是否素数 
					{
						flag_j=0;
						for(p_j=2;p_j<j;p_j++)
						if(j%p_j==0)
						{
							flag_j=1;
						}
						if(flag_j==0&&j+i==k)    //如果第二个数字也是素数,又第一个素数和第二个素数 
						{                        // 之和为等于输入的数字k输出结果 
							printf("%ld = %ld + %ld",k,i,j);
							return 1;           //由于题目要求只输出第一个数字最小的结果,
						}	                    //当输出完第一次循环结果时结束循环,退出程序 
					}
		}
	}	
 }

分析:

先产生两个数字,再判断第一个数字是否素数,当第一个数字素数是在判断第二个数字是否素数,当第二个数字也是素数时

再判断这两个素数之和是否等于输入的数字,都满足时输出结果,由于题目要求只能输出第一个数字最小的结果所以输出第一次

循环结果后结束循环退出。

猜你喜欢

转载自blog.csdn.net/weixin_44119517/article/details/89287545
今日推荐