請高手幫忙一下!!!
小妹的VB程式專題為:
輸入一數值至textbox1.text 由 textbox2.text 呈現最小數相乘
例如:
輸入 16
呈現 2*2*2*2
以下是小妹寫的程式 但一直卡住
所以........麻煩高手幫忙一下!!還是...我的程式寫錯了?!
dim a(20),b,t as integer
dim m as double
t = textbox1.text
b = 2
do while t>=b
for i=1 to 20
if t mod b = 0 then
a(i) = t/a
m = m + a(i).tostring + "*"
else
b = b+1
end if
next
loop
textbox2.text = m
2007-01-12 11:37:50 · 2 個解答 · 發問者 愛aska說*牙套妹 3 in 電腦與網際網路 ➔ 程式設計
我是在 VB6 上照你的原程式改
如果有不合你的語法之處
請照你的語法修訂一下
dim a(20),b,t as integer
dim m as string
t = textbox1.text
b = 2
do while t>=b
' for i=1 to 20
if t mod b = 0 then
t = t/b
m = m & "*" & b ' VB6 要如此; 先放 *, 待會兒比較容易處理
' m = m + "*" + b.tostring
else
b = b+1
end if
' next i ' 原來的 for loop 少了一個 i, 但本題不需要 for loop
loop
textbox2.text = mid(m,2) ' 拿掉第一個 *
如果有問題, 請來函討論. 不然, 我可能會錯失你再補充的疑點.
2007-01-12 23:31:21 · answer #1 · answered by JJ 7 · 0⤊ 0⤋
Public Sub PrimeAnalyse(ByVal N&, ByVal i&, ByVal ans$)
If N > 1 Then
If N Mod i = 0 Then
Call PrimeAnalyse(N / i, i, ans & "*" & i)
Else
Call PrimeAnalyse(N, i + 1, ans)
End If
Else
Print Mid(ans, 2)
Exit Sub
End If
End Sub
Private Sub Command1_Click()
N = Val(Text1)
Call PrimeAnalyse(N, 2, "")
End Sub
2007-01-12 16:57:11 補充:
Print Mid(ans, 2) 改為
Text2 = Mid(ans, 2)
就可符合你的需求了
2007-01-12 11:56:15 · answer #2 · answered by ? 6 · 0⤊ 0⤋