| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 240 人关注过本帖
标题:偶数的哥德巴赫解的拆分个数的研究程序
只看楼主 加入收藏
ysr2857
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:4
帖 子:315
专家分:14
注 册:2020-2-10
结帖率:100%
收藏
 问题点数:0 回复次数:4 
偶数的哥德巴赫解的拆分个数的研究程序
我是来向各位老师学习的,承蒙朋友抬爱选为版主,实在有愧!谢谢大家!
发个程序,希望感兴趣的朋友关注,希望对您有所帮助!也许可能对您有用,先发一下程序结果和说明:
(偶数)(方根内的素数构成的素数和对个数)(总素数和对个数)
210 2  19
420 2  30
630 4  41
840 4  51
1050 5  57
1260 4  68
1470 6  73
1680 4  83
1890 7  91
2100 6  97
2310 7  114
2520 3  112
2730 9  128
2940 6  122
3150 4  138
3360 8  138
3570 10  154
3780 7  149
3990 5  163
4200 5  165
4410 6  171
4620 6  190
4830 8  189
其中的偶数公差为210,这样做总素数和对个数仍然有不规则波动,波动幅度明显减小。
原因是影响波动幅度的是素因子个数多少,尤其是小素因子,大素因子影响小或几乎没有影响,而210=2*3*5*7,含有4个不相同的素因子。
这样可以弄成多个公式,比如公差为210的可以用105个公式,来得到大于等于6的所有的偶数的哥德巴赫猜想解的公式,这些公式容易接近实际,因为这样的偶数数列的
哥德巴赫猜想解的个数波动很小,我们的公式结果是增函数是不波动的,就容易接近实际而不必跟踪波动,实际波动是不规则的无法跟踪,不可能处处合拍。
下面是另一个数列的结果:
(偶数)(方根内的素数构成的素数和对个数)(总素数和对个数)
6 0  1
216 1  13
426 3  21
636 4  28
846 4  32
1056 4  44
1266 3  42
1476 5  51
1686 4  56
1896 5  63
2106 6  71
2316 7  66
2526 2  68
2736 8  82
2946 5  87
3156 3  85
3366 8  105
3576 8  96
3786 6  96
3996 3  99
4206 4  105
4416 5  111
4626 5  110
4836 7  121
下面是程序代码和可执行程序(双击一下就可以打开并运行程序):
Private Function fenjieyinzi(sa As String) As String
Dim x, a, b, k As String
a = Val(sa)

x = 3
If a <= 1 Or a > Int(a) Then
If a = 1 Then
fenjieyinzi = "它既不是质数,也不是合数"

Else
MsgBox "error"
End If
  
Else

Do While a / 2 = Int(a / 2) And a >= 4
  
If b = 0 Then
fenjieyinzi = fenjieyinzi & "2"
b = 1
Else
fenjieyinzi = fenjieyinzi & "*2"
End If
a = a / 2
k = a
  
Loop

Do While a > 1
Do While x <= Sqr(a)
Do While a / x = Int(a / x) And a >= x * x
  
If b = 0 Then
fenjieyinzi = fenjieyinzi & x
b = 1
Else
fenjieyinzi = fenjieyinzi & "*" & x
End If
a = a / x
Loop
  
x = x + 2
Loop
  
k = a
a = 1
Loop
  
If b = 1 Then
fenjieyinzi = fenjieyinzi & "*" & k
Else
fenjieyinzi = "这是一个质数"
End If
  
  
  
  

End If

End Function





Private Sub Command1_Click()
Dim a, b
a = Val(Text1)
q = Val(Text3)
Do While a <= q
s = 0
m = Sqr(a)
a1 = 3
Do While a1 <= m
b = a - a1
c = fenjieyinzi(Val(a1))
d = fenjieyinzi(Val(b))
If InStr(c, "*") = 0 And InStr(d, "*") = 0 Then
s = s + 1

Else
s = s
End If
a1 = a1 + 2
Loop
a2 = a1
s1 = s
Do While a2 <= a / 2
b1 = a - a2
c1 = fenjieyinzi(Val(a2))
d1 = fenjieyinzi(Val(b1))

If InStr(c1, "*") = 0 And InStr(d1, "*") = 0 Then
s1 = s1 + 1

Else
s1 = s1
End If

a2 = a2 + 2

Loop

Text2 = Text2 & CStr(a) & " " & CStr(s) & "  " & CStr(s1) & vbCrLf
Print a, s, s1

a = a + 210
Loop

Combo1.Text = "(偶数)(方根内的素数构成的素数和对个数)(总素数和对个数)" & vbCrLf & Text2.Text

End Sub

Private Sub Command2_Click()
Text1 = ""
Text2 = ""
Text3 = ""
Combo1 = ""
Form1.Cls
End Sub




问题就是如何通过这些数据,分别搞出拟合函数(就是哥德巴赫猜想解的个数公式)?当然有些数学软件可以做到(起码是近似的),比如excel等。(明天试试再发一下拟合函数结果,谢谢朋友关注沟通!欢迎讨论!)

(比如6=3+3,我们就说6有1对哥德巴赫猜想解,而10=3+7=5+5,我们就说10有两对哥德巴赫猜想解,就是两个“1+1”。)

[此贴子已经被作者于2020-11-8 22:04编辑过]

附件: 游客没有浏览附件的权限,请 登录注册
搜索更多相关主题的帖子: 偶数 素数 个数 End If 
2020-11-08 21:31
ysr2857
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:4
帖 子:315
专家分:14
注 册:2020-2-10
收藏
得分:0 
显然第一个数列的结果比第二个数列的结果大,若两个数列交互排列则波动明显幅度太大。
下面分别拟合一下,(近似的函数)
210 2  19
840 4  51
1680 4  83

哥猜解的个数数据,据此拟合函数如下:
y=0.4281*x^0.7095,
当x=84000时,y=1334,实际为1662个素数和对。

[此贴子已经被作者于2020-11-9 22:41编辑过]

2020-11-09 22:12
ysr2857
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:4
帖 子:315
专家分:14
注 册:2020-2-10
收藏
得分:0 
显然第一个数列的结果比第二个数列的结果大,若两个数列交互排列则波动明显幅度太大。
下面分别拟合一下,(近似的函数)
216 1  13
846  4  32
1686  4  56

哥猜解的个数数据,据此拟合函数如下:
y=0.2917*x^0.7036,
当x=84006时,y=850,实际为1117个素数和对。
2020-11-09 22:42
ysr2857
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:4
帖 子:315
专家分:14
注 册:2020-2-10
收藏
得分:0 
218 1  7
848 1  15
1688 2  26

220 0  9
850 3  25
1690 1  37

244 3  9
874 2  19
1714 2  27
据此可以拟合函数:
拟合函数依次如下:y=0.2301*x^0.6299,y=0.2078*x^0.7021,y=0.4024*x^0.5664.

由y=0.2301*x^0.6299,当x=84008时,y=290.
由y=0.2078*x^0.7021,当x=84010时,y=595.
由y=0.4024*x^0.5664,当x=84034时,y=247.
实际为:84008是525个,84010是722个,84034是536个。
2020-11-11 22:24
ysr2857
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:4
帖 子:315
专家分:14
注 册:2020-2-10
收藏
得分:0 
如下是个好玩的程序,是利用前述拟合函数对整数6958000001674999998647的分解,这是22位的整数,是两个11位的整数的积。
如下程序输出结果为634876752188346,是15位的,前11位接近实际。是两种算法对偶数2*6958000001674999998647=13916000003349999997294的哥猜解个数的求结果的比值,把小数变成整数的比值,分子就是所求(不会还原小数的整数比值,就是把分子的小数点去掉而已)。
实际整数6958000001674999998647=71000000041*97999999967,此方法仅是一种猜想而已。
下面是程序代码:(仅发主程序)

Private Sub Command1_Click()
Dim a, b, c
a = Trim(Text1)
b = 2 * a
B1 = Sqr(b)
c = b ^ 0.5664
d = 0.4024 * c
x = qssgs(Trim(B1))
y = 0.328 * x ^ (-0.7341)
q = b * y / 4
q1 = q / d
q2 = q1 * 10 ^ 13
Text2 = q2
End Sub

Private Sub Command2_Click()
Text1 = ""
Text2 = ""
End Sub

Private Function qssgs(sa As String) As String
Dim a, b, c
a = Trim(sa)
b = Sqr(a)

If a > 10 ^ 25 Then
a1 = Log(a) / Log(10)
b3 = (1.74136140824861 ^ ((1.06415 * Exp(-0.00175 * (a1 - 0.65 * (a1 - 21)))) ^ a1)) ^ a1
c = (a + (b3 + 4) * b) / Log(a)
ElseIf a > 10000000 Then
a1 = Log(a) / Log(10)
b2 = Exp(1.033 * a1)
B1 = 0.159 * b2
b4 = (1.74136140824861 ^ (1.8 * a1)) / 4.9
b5 = (B1 + b4) / 2
c = (a + (b5 + 4) * b) / Log(a)
ElseIf a >= 10000 Then
a1 = Log(a) / Log(10)
b3 = (56 * a1 ^ 3 - 741 * a1 ^ 2 + 3367 * a1 - 5142) / 6
c = (a + (b3 + 4) * b) / Log(a)
ElseIf a >= 1000 Then
c = (a + 4 * b) / Log(a)
ElseIf a >= 500 Then
c = (a + 2 * b) / Log(a)
ElseIf a >= 100 Then
c = (a + b) / Log(a)
Else

c = a / Log(a)
End If
d = a / c
D1 = a - Int(d)
c1 = a & "内的素数个数下限为 " & Int(c)

qssgs = c

End Function

由于13916000003349999997294除以210的余数是34,所以,求其哥猜解用的函数是y=0.4024*x^0.5664.
另一种方法是前面叙述的公式。
这个公式不准确只是近似值,如果公式准确,可能就更接近实际,那就有用了。
此法仅是个猜想,还要继续研究,欢迎讨论,欢迎批评!

除以210余数为34的偶数数列的哥猜解个数的拟合公式:
244 3  9
874 2  19
1714 2  27
据此可以拟合函数:
拟合函数如下:y=0.4024*x^0.5664.

再说一遍:此法是猜想,能不能用还要研究,希望感兴趣的朋友沟通探讨和研究!欢迎切磋!

[此贴子已经被作者于2020-11-14 19:50编辑过]

2020-11-14 19:40
快速回复:偶数的哥德巴赫解的拆分个数的研究程序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.115030 second(s), 8 queries.
Copyright©2004-2020, BCCN.NET, All Rights Reserved