验证哥德巴赫猜想的C程序设计及源码

本文通过模块化设计的方法,使用C语言设计了一个验证哥德巴赫猜想的模块化程序,源码见后文。


          哥德巴赫猜想    哥德巴赫1742年给欧拉的信中哥德巴赫提出了以下猜想:任一大于2的偶数都可写成两个质数之和。这是一个尚待解决的数学难题,目前为止的进展是“2+1”,具体内容此处就不详述了。

本方案中,模块化设计的部分为:

  1. 偶数的判定模块
  2. 质数(对)的判定模块
  3. 辅助模块
  4. 主函数(主调用)模块


C语言完整代码程序可以多次执行对输入数据的哥德巴赫分解! ]

#include "stdio.h"
#include"math.h"

int isPrime(int);
void deverse(int n);

int main(void){
    int n=0,flag=0;
    do{
        if(!flag){
            printf("输入一个大于5的偶数,测试哥德巴赫猜想[输入一个小于6的数结束]:\n");
            scanf("%d",&n);
            if(n<6){
                printf("请检查是否大于5,并重新输入:\n");
                scanf("%d",&n);
            }
            flag=1;
            if(n<6 printf="" n="" return="" if="" n="">=6 &&n%2==0){
           deverse(n);
        }
        if(n%2!=0){
            printf("请输入一个偶数![输入一个小于6的数结束]:\n");
            scanf("%d",&n);continue;
        }
        printf("输入一个大于5的偶数,测试哥德巴赫猜想[输入一个小于6的数结束]:\n");
        scanf("%d",&n);

    }while(n>=6);
    printf("Byebye!\n");
    return 0;
}

int isPrime(int n){
    int mid_n=sqrt(n);
    for(int i=2;i<=mid_n;i++){
        if(n%i==0){
            return 0;
        }
    }
    return 1;
}
void deverse(int n){
    int k=0;
    for(int i=1;i<=n/2;i++){
        if(isPrime(i)){
            if(isPrime(n-i)){
                k++;
                printf("Goldbach company %2d: %3d=%3d +%3d\n",k,n,i,n-i);
            }
        }
    }
    if(k==0){
        printf("%d is not a Goldbach defined number!\n");
    }

    return;
}

运行截图:

  • input:    5↙74356↙3↙

  • input:45↙

  • input:94299↙94↙2↙

  • input:127648↙2↙

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值