| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 719 人关注过本帖
标题:计算标准佩尔方程x^2-Dy^2=1的最小解的vb程序
只看楼主 加入收藏
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:836
专家分:77
注 册:2020-2-10
结帖率:100%
收藏
 问题点数:0 回复次数:1 
计算标准佩尔方程x^2-Dy^2=1的最小解的vb程序
Private Sub Command1_Click()
'计算标准佩尔方程x^2-Dy^2=1的最小解,D的数值不能太大
Dim d, a0, r
d = Val(Text1)
a0 = Int(Sqr(d))
a1 = a0
r = Sqr(d)
p0 = a0
q0 = 1
r = 1 / (r - a1)
a1 = Int(r)
p1 = a0 * a1 + 1
q1 = a1
s1 = 1
If a1 = 2 * a0 Then
p1 = p0: q1 = q0
Else
s1 = 2
Do While Int(1 / (r - a1)) <> 2 * a0
s1 = s1 + 1
r = 1 / (r - a1)
a1 = Int(r)
  p2 = a1 * p1 + p0
q2 = a1 * q1 + q0

p0 = p1: q0 = q1
p1 = p2: q1 = q2

Loop
End If

If Val(s1) Mod 2 = 0 Then
Text2 = "最小解为: x0=" & p1 & " y0=" & q1 & " 循环节长度:" & Val(s1)
Else
Text2 = "最小解为: x0=" & 2 * p1 * p1 + 1 & " y0=" & 2 * p1 * q1 & " 循环节长度:" & Val(s1)
End If

End Sub

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

End Sub
2025-04-04 23:43
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:836
专家分:77
注 册:2020-2-10
收藏
得分:0 
D的值小于等于1001,否则就溢出了!D的值必须为非平方数:
输入45,输出:最小解为: x0=161 y0=24 循环节长度:6
输入97,输出:最小解为: x0=62809633 y0=6377352 循环节长度:11
输入997,输出:最小解为: x0=14418057673 y0=456624468 循环节长度:13
输入1001,输出:最小解为: x0=1060905 y0=33532 循环节长度:14
2025-04-04 23:45
快速回复:计算标准佩尔方程x^2-Dy^2=1的最小解的vb程序
数据加载中...
 
   



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

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