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

本文深入解析了一个用于寻找两个素数,其和等于给定数值k的算法。通过双层循环,首先生成两个数字,然后逐一判断是否为素数,并检查两素数之和是否等于k。一旦找到符合条件的素数对,即输出结果并终止循环。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

#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;           //由于题目要求只输出第一个数字最小的结果,
						}	                    //当输出完第一次循环结果时结束循环,退出程序 
					}
		}
	}	
 }

分析:

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值