验证哥德巴赫猜想的C程序设计及源码
本文通过模块化设计的方法,使用C语言设计了一个验证哥德巴赫猜想的模块化程序,源码见后文。
哥德巴赫猜想 哥德巴赫1742年给欧拉的信中哥德巴赫提出了以下猜想:任一大于2的偶数都可写成两个质数之和。这是一个尚待解决的数学难题,目前为止的进展是“2+1”,具体内容此处就不详述了。
本方案中,模块化设计的部分为:
- 偶数的判定模块
- 质数(对)的判定模块
- 辅助模块
- 主函数(主调用)模块
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↙7↙4356↙3↙
- input:4↙5↙
- input:942↙99↙94↙2↙
- input:127↙648↙2↙
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
