今天又是一小题 送分 100分!

landyshouguo 2008-10-22 11:49:12
编一求两数m,n最大公约数的函数f(m, n),主调程序在两个文本框中输入数据,在TextBox框中显示结果!vb.net
...全文
180 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
cauhorse 2008-10-23
  • 打赏
  • 举报
回复
ups
HimeTale 2008-10-23
  • 打赏
  • 举报
回复
vb语法忘的差不多了

function func1(m as integer,nas integer) as integer
if m>n then
dim iTemp as integer = m
m=n
n=iTemp
end if

while m <> 0 loop
m=n mod m
n=m
end while

return n
xxaabb 2008-10-23
  • 打赏
  • 举报
回复
good job
mjjzg 2008-10-23
  • 打赏
  • 举报
回复
UP
yu3350360 2008-10-23
  • 打赏
  • 举报
回复
接分了
niyi0318 2008-10-23
  • 打赏
  • 举报
回复
下手太快的人很多。..没机会了。..但是也感谢楼主的好意
PrinSun 2008-10-23
  • 打赏
  • 举报
回复
求楼主的问题 需要考虑运算的速度,小点的数无所谓,但太大就有问题了!~


public function f(byval m as integer,byval n as integer) as integer
if m<n then m=m+n:n=m-n:m=m-n
if m mod n = 0 then return n
for i as integer=cint(math.sqrt(n)) to 1 step -1
if (n mod i=0) and (m mod i=0) then return i
next i

end function



这样的速度快点。。。
amandag 2008-10-23
  • 打赏
  • 举报
回复
又是VB.NET
JeffChung 2008-10-23
  • 打赏
  • 举报
回复

9 public static int GetMaxCommonDivisor(int m,int n)
10 {
11 if (m < n)
12 {
13 int temp = m;
14 m = n;
15 n = temp;
16 }
17
18 int r = m % n;
19
20 while (r != 0)
21 {
22 m = n;
23 n = r;
24 r = m % n;
25 }
26
27 return n;
28 }
29 }

快乐乔巴 2008-10-23
  • 打赏
  • 举报
回复
搂主以后来点生活方面的 这样比较有趣 讨论的范围也会很广的 不管怎么样 支持搂主这么热心~我顶~
Forrest23 2008-10-23
  • 打赏
  • 举报
回复
怎么老是数学方面的?
IMAGSE 2008-10-23
  • 打赏
  • 举报
回复
接分~
jiang_jiajia10 2008-10-23
  • 打赏
  • 举报
回复
function func1(m as integer,nas integer) as integer
if m>n then
dim iTemp as integer = m
m=n
n=iTemp
end if

while m <> 0 loop
m=n mod m
n=m
end while

return n
sanji09 2008-10-23
  • 打赏
  • 举报
回复
以前做练习时写的


Public Class Form1
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

'イベントのコメント
''------------------------------------------------
'' [処理名]:Button3_Click
'' [機 能]:終了
'' [備 考]:なし
'' [作成者]:
'' [作成日]:
''-------------------------------------------------
Me.Close()
End Sub
Private Sub Form1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress
'イベントのコメント
''------------------------------------------------
'' [処理名]:Form1_KeyPress
'' [機 能]:ESCキーでプログラムを終了すること
'' [備 考]:なし
'' [作成者]:
'' [作成日]:
''-------------------------------------------------
If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Escape) Then
Me.Close()
End If
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
ListBox1.Items.Clear()
Dim ti1, ti2 As Integer
Dim result As Integer
Try
'取得値1
ti1 = CInt(Me.TextBox1.Text)
'取得値2
If Me.TextBox2.Text = "" Then
ti2 = 0
Else
ti2 = CInt(Me.TextBox2.Text)
End If

'最小公倍数
If Me.RadioButton1.Checked Then
result = Me.Maxkyk(ti1, ti2)
ListBox1.Items.Add(result)
End If
'最大公約数
If Me.RadioButton2.Checked Then
result = Me.Minkb(ti1, ti2)
ListBox1.Items.Add(result)
End If
'素数
Try
If Me.RadioButton3.Checked Then
If ti1 = 1 Or ti1 = 0 Then
MessageBox.Show("指定の数値では計算できません")
Exit Sub
End If
Dim b As Boolean
Dim i, j As Long
For i = 2 To ti1
b = True
For j = 2 To Int(Math.Sqrt(i))
If i Mod j = 0 Then
b = False
Exit For
End If
Next j
If b Then
Me.ListBox1.Items.Add(CStr(i))
End If
Next i
End If
Catch ex As Exception
ti1 = 1
ti2 = CInt(Me.TextBox2.Text)
MessageBox.Show("指定の数値では計算できません")
Me.TextBox1.Focus()
End Try
Catch ex As Exception
ti1 = 0
ti2 = 0
MessageBox.Show("数字のみ指定できます")
Me.TextBox1.Text = ""
Me.TextBox2.Text = ""
Me.TextBox1.Focus()
End Try
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

'イベントのコメント
''------------------------------------------------
'' [処理名]:Button1_Click
'' [機 能]:入力されている数値、および回答の数字をすべてクリアする
'' [備 考]:なし
'' [作成者]:
'' [作成日]:
''-------------------------------------------------
TextBox1.Text = ""
TextBox2.Text = ""
ListBox1.Items.Clear()
End Sub
Private Sub RadioButton3_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton3.CheckedChanged

'イベントのコメント
''------------------------------------------------
'' [処理名]:RadioButton3_CheckedChanged
'' [機 能]:素数が選ばれた場合は,値2入力不可にし
'' [備 考]:なし
'' [作成者]:
'' [作成日]:
''-------------------------------------------------
Me.TextBox2.Enabled = False
End Sub

Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged

'イベントのコメント
''------------------------------------------------
'' [処理名]:RadioButton1_CheckedChanged
'' [機 能]:最小公倍数を選ばれた場合は,値2入力可
'' [備 考]:なし
'' [作成者]:
'' [作成日]:
''-------------------------------------------------
Me.TextBox2.Enabled = True
End Sub

Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged

'イベントのコメント
''------------------------------------------------
'' [処理名]:RadioButton2_CheckedChanged
'' [機 能]:最大公約数を選ばれた場合は, 値2入力可
'' [備 考]:なし
'' [作成者]:
'' [作成日]:
''-------------------------------------------------
Me.TextBox2.Enabled = True
End Sub

Function Maxkyk(ByVal ti1 As Integer, ByVal ti2 As Integer) As Integer

'VB関数のコメント
''-------------------------------------------------
'' [処理名]:Maxkyk
'' [機 能]:最大公約数
'' [引 数]:ti1= 値1 ti2= 値2
'' [返 値]:max = 最大公約数
'' [備 考]:なし
'' [作成者]:
'' [作成日]:
''-------------------------------------------------
Dim max As Integer
max = (ti1 * ti2) / Minkb(ti1, ti2)
Return max
End Function
Function Minkb(ByVal ti1 As Integer, ByVal ti2 As Integer) As Integer

'VB関数のコメント
''-------------------------------------------------
'' [処理名]:Minkb
'' [機 能]:最小公倍数
'' [引 数]:ti1= 値1 ti2= 値2
'' [返 値]:min = 最小公倍数
'' [備 考]:なし
'' [作成者]:
'' [作成日]:
''-------------------------------------------------

Dim min As Integer
Dim x, y, z As Integer
x = IIf(ti1 >= ti2, ti1, ti2)
y = IIf(ti1 <= ti2, ti1, ti2)
Do
z = x Mod y : If z = 0 Then Exit Do
x = y : y = z
Loop
min = y
'End If
Return min
End Function
End Class


accomp 2008-10-23
  • 打赏
  • 举报
回复
观摩下 别人的写法
nodoby 2008-10-23
  • 打赏
  • 举报
回复
来的好完
jamsxfl 2008-10-23
  • 打赏
  • 举报
回复

看看书
haifeng39 2008-10-23
  • 打赏
  • 举报
回复
up
wenjunsu 2008-10-22
  • 打赏
  • 举报
回复
m=int(inputbox("请输入M的值:",,"36"))
n=int(inputbox("请输入N的值:",,"33314562"))
msgbox m & "和" & n &"的最大公约数:" & xy_y(m,n)
function xy_y(a,b)
if a<b then tmp=a:a=b:b=tmp
for i=1 to b
if a mod i=0 and b mod i=0 then
xy_y=i
end if
next
end function

16,717

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧