* v2 g( o& c8 l* _5 t" F9 e( VC语言经典算法实例5:验证哥德巴赫猜想 3 J# i) ~% s% h7 } p#「笔耕不辍」--生命不息,写作不止# 0 p. d0 l& x* f4 ?$ h0 A- LC语言经典算法实例5:验证哥德巴赫猜想- R* W/ z4 B& T+ D7 `% @# N% l
一、问题描述/ ~+ v' z6 X j" L
1.1、什么是哥德巴赫猜想 " q! B9 n8 o# c+ g% I1.2、什么是半素数 & [2 K" K& v( y5 A0 H1.3、本文的问题描述4 p5 v* T* d Y% N, x5 ^
二、算法实例编译环境 $ E' X! H. @" d. Q' ?+ K( c% o4 H. J三、算法实例实现过程1 W& Z* E h0 R( x8 D
3.1、包含头文件) |' v! d; ?/ C( ?
3.2、声明变量' r# b, W; j* D# U' v
3.3、输入一个大于 6 的偶数 3 S: ~& I, C( |$ M3.4、对输入的数字进行哥德巴赫猜想的验证 1 B- |& {7 K6 R* l+ Y) q+ h) a3.5、判断输入的数字是否为素数。# a, L* \/ S8 v' N$ r
3.6、对输入的数字进行哥德巴赫猜想的判断: W2 y% h; p* u' Q: n8 G
3.7、判断数字1-100是否符合哥德巴赫猜想。$ C7 v% ~- B# y4 n* F
四、经典算法实例程序 完整代码 9 o! E, L7 P' G9 Q4.1、main.h文件0 a* w6 @! k5 }
4.2、main.c文件 + h j1 d, d5 Z K8 K. z五、总结 + v9 L4 `( o8 z+ y% y% T P6 @" {; D; o* G8 e8 D% }
' ~1 p0 U `& r( ]( Z, r/ F一、问题描述4 v& J& T1 u3 m% P- x
1.1、什么是哥德巴赫猜想1 I; u. b1 l6 `
哥德巴赫1742年在给欧拉的信中提出了以下猜想:任一大于2的整数都可写成三个质数之和 。但是哥德巴赫自己无法证明它,于是就写信请教赫赫有名的大数学家欧拉帮忙证明,但是一直到死,欧拉也无法证明。 因现今数学界已经不使用“1也是素数”这个约定,原初猜想的现代陈述为:任一大于5的整数都可写成三个质数之和。(n>5:当n为偶数,n=2+(n-2),n-2也是偶数,可以分解为两个质数的和;当n为奇数,n=3+(n-3),n-3也是偶数,可以分解为两个质数的和)欧拉在回信中也提出另一等价版本,即任一大于2的偶数都可写成两个质数之和。今日常见的猜想陈述为欧拉的版本。把命题"任一充分大的偶数都可以表示成为一个素因子个数不超过a个的数与另一个素因子不超过b个的数之和"记作"a+b"。1966年陈景润证明了"1+2"成立,即"任一充分大的偶数都可以表示成二个素数的和,或是一个素数和一个半素数的和"。+ x: Q: H: x: Z$ Q) r1 w
2 x: R. q" ]6 Q( g) x1.2、什么是半素数 1 T: b* I: C' G t: _ M( b" ?什么是半素数- o2 Q( Y- L* G5 _
两个素数的乘积所得的自然数0 Q% O; h' ^0 h
若一个自然数可以表示成两个素数乘积的形式,这个自然数就叫做半素数(又名半质数、二次殆素数)。 . i1 m2 P1 D% o4 b5 f& T* b8 E+ ]; t) A, ~7 d; K
例如下面的一些数字为半素数。 0 q7 n; l. Z: k5 _/ j* t: Z4,6,9,10,14,15,21,22,25,26,33,34,35,38,39,46,49,51,55,57,58,62,65,69,74,77,82,85,86,87,91,93,94,95,106,111,115,118,119,121,122,123,129,133,134,141,142. 4 v* F# r1 D/ u6 i+ H# P Z) G6 R2 M2 Z1.3、本文的问题描述 ' I+ s4 n7 z3 i( D" q% e8 e3 t验证哥德巴赫猜想) T, I) r) n# E) w# x
问题的描述' K# R& Z5 [: Y' L: G
如下几点所示2 g' |/ d) U* v/ Y9 S
% F$ \" ^# Y( q0 O5 \2 G
任一充分大的偶数都可以表示成二个素数的和,或是一个素数和一个半素数的和。# H8 `7 S* B* l2 O+ c
偶数输入的为大于6的偶数。' H) J. ]# H/ H. h' W: C% t
对1-100之间的数字进行哥德巴赫猜想的验证。 ( v p6 V1 i ]+ f6 b程序采用函数模块化的思路。5 b) P) K% b% C1 v9 e# K3 \
二、算法实例编译环境# `/ F/ l9 h6 X8 V8 ]. |1 {
本文C语言经典算法实例的编译环境,使用的是集成开发环境:Visual Studio 2019) D8 Z$ O% H, ]; u
W+ L& D! S$ C' u: O* y! \# F, r; Y7 W c
; Y) R0 l0 a4 F4 q2 h3 C- e0 d$ K0 h5 B' u
Visual Studio 2019官网链接如下 * m/ p' V2 Y0 a9 C. k3 G+ _( X, j. B5 S. q, B7 m
Visual Studio 2019官网链接0 y3 o9 A0 b8 `: R4 J$ M E; A/ X
+ f6 o3 h* o' N5 L4 V' M
1 H, l6 D; B. O. I4 W, \' ^7 y, @Visual Studio 2019集成的开发环境的特点有+ [6 H4 x1 |$ M- u& c4 ~" M* K. [
/ W: |# ^6 q/ H7 ^) l' C) OVisual Studio 2019默认安装Live Share代码协作服务。 ) h6 S! c$ K9 [4 f F! [7 s帮助用户快速编写代码的新欢迎窗口、改进搜索功能、总体性能改进。# z( g* i8 d1 B
Visual Studio IntelliCode AI帮助。 J4 R1 Y) r/ C# l7 j# A2 s
更好的Python虚拟和Conda支持。 / i$ h! L4 Z5 G% }) M- V以及对包括WinForms和WPF在内的.NET Core 3.0项目支持等 % p/ ]. \' w4 z! w: w4 j/ l: O三、算法实例实现过程 0 x0 e, g: o# o2 Z1 c" j3.1、包含头文件 7 N& K% E( e/ m+ Y$ ~包含头文件 代码如下所示0 `9 b5 m9 B0 I0 m; T
6 j& g8 d8 v" f$ Y9 g2 ?: j6 X- f. X u! `3 u+ {: ~* X+ G5 d! [67:不能写成两个素数的和,所以其不符合哥德巴赫猜想。$ s! z# H X7 G b
" n8 }1 H/ e) i8 D M
& E3 X6 x4 a* F2 n
68 = 1 + 67$ v$ |/ u) Z. Q$ _8 x
68 = 7 + 61, w+ Z: R: B7 \) ?6 l" G
68 = 31 + 37; O+ e9 M% F4 T* P
* P; B y9 y6 M0 C0 q6 w68:能写成两个素数的和,所以其符合哥德巴赫猜想。 ! W$ H0 v# V. Y T- W' u. d7 V 9 U) y4 C& ]4 ?5 e: d' n ' Y, @ U9 o1 E. `9 O# ^ / E& E* L( b$ b9 c0 \( L+ Z' o: {69:不能写成两个素数的和,所以其不符合哥德巴赫猜想。 ) r4 M. j- m5 D' o3 n9 i/ D) d ; O9 I/ [. R+ m7 l! l: J! s8 C( e$ U6 l% C
70 = 3 + 67 + _( h0 }* r0 O# W1 H70 = 11 + 59+ {. _4 x0 P. d) Q3 J) v8 T
70 = 17 + 53 - i. f! b4 Z$ i; ~& G7 s7 t3 J70 = 23 + 479 J& e. n, p; K+ ?; k+ H
70 = 29 + 41 ( I' B' M5 |5 \; T' G8 ]( ^: ^2 G$ I6 [( |/ f
70:能写成两个素数的和,所以其符合哥德巴赫猜想。. R# W3 T3 J1 _8 W E- ^$ O5 F E
( t( r; K# i0 j$ e- l% S
3 r6 \1 G7 \+ d) }) s+ \* B# l( o9 U/ o3 O" I0 e+ \3 h4 j
71:不能写成两个素数的和,所以其不符合哥德巴赫猜想。 8 f* w7 ^/ O' @: E5 U' i0 J4 @ - d! v D& t& E& I $ `& S1 s% O8 ]7 n72 = 1 + 71 6 ^" _0 B# R9 {7 L. ?& K72 = 5 + 67 ' Z9 l [" d1 q( E( T3 A7 r0 j72 = 11 + 61 7 y8 I; U) F4 q72 = 13 + 59: {$ ~- M# x6 L8 M8 N/ t
72 = 19 + 536 b1 o6 X! Z! o, N5 p
72 = 29 + 43 ( J& B7 ~* z5 h& y72 = 31 + 41 + d* _' L" i# g3 @& Z3 x # T% S7 p. r" Z' F, h; d72:能写成两个素数的和,所以其符合哥德巴赫猜想。 ) f0 V. _/ z; J7 l% d2 H& X0 a# J$ i, t3 {! r# T
0 @- i ?! k; f
( z% j& e/ U$ _( t4 J
73:不能写成两个素数的和,所以其不符合哥德巴赫猜想。2 p: R+ q# N6 S& Q! |7 D
# U; Q, H! E. z6 I9 N* L. p% w
. i* r! P! Y9 b7 A4 }4 B74 = 1 + 733 u+ |! M9 a# y1 c1 t2 r2 z, O, q
74 = 3 + 71 i* P9 x8 |& ?7 t, d8 k
74 = 7 + 67: W4 V- i+ m+ g- |' G" r b9 o
74 = 13 + 616 Q. x. J, u% I. @
74 = 31 + 43$ G$ c! O: d; S
74 = 37 + 372 C7 g5 _* b* n- S# P% N
" K3 o2 K# M5 E, {9 B X5 O
74:能写成两个素数的和,所以其符合哥德巴赫猜想。& O% [4 z$ y# l
4 R4 x p7 a# R* Y( [0 T* q- q8 ]4 i. ^+ M; Y
& k: @3 k. q: s5 T
75:不能写成两个素数的和,所以其不符合哥德巴赫猜想。# d3 l8 ^. V/ N$ T. H) w8 r: }# g
0 Z; ]2 M9 l% y8 Z- T/ N, \5 D+ e7 y, N