[VB2005][心得] 關於1-1000的質數
小弟這個禮拜暑修開始學VB 2005
似乎是比VB 6.0還要新一點的東東
兩者講話的方式好像有點不太一樣
這兩天在做作業一直在想怎麼列質數的公式
因為數學界好像也沒有絕對的公式可以直接求質數 @@a
作業題目求的範圍是1-1000
精華區的討論串只有討論到100
看完之後還是霧煞煞,不知道怎麼拿1-100跑出的質數交互相乘來剔除
想了兩天(我比較笨>"<)
反覆思考精華區kyrox大大的文章後
最後才豁然開朗
原來把範圍最大值開根號之後
把那個數值無條件進入到整數 n,再列出 2 到 n 之間的質數
最後從大於n的最小整數(奇數)到範圍最大值以Increment=2來對一開始列出的質數取餘數
全部相乘不等於0來求範圍間的質數
以下是小弟用VB2005列的程式碼,如果也有其他的初學者,可以供大家參考
如果有錯誤的地方或是可以再縮短,請不吝指教m(_*_)m
(中規中矩法可能有點長,請多多包涵= =")
------------------------------------------------------------------------------
Module Module1
Sub Main()
Dim x As Integer
Console.WriteLine("2")
Console.WriteLine("3")
Console.WriteLine("5")
Console.WriteLine("7")
Console.WriteLine("11")
Console.WriteLine("13")
Console.WriteLine("17")
Console.WriteLine("19")
Console.WriteLine("23")
Console.WriteLine("29")
Console.WriteLine("31")
Do
For x = 33 To 1000 Step 2
If (x Mod 2) * (x Mod 3) * (x Mod 5) * (x Mod 7) * (x Mod 11) *
(x Mod 13) * (x Mod 17) * (x Mod 19) * (x Mod 23) *
(x Mod 29) * (x Mod 31) <> 0 Then <=這三行我打成一行,是不
Console.WriteLine("{0}", x) 是不能用 _ 分割啊= =a
End If
Next
Exit Do
Loop
Console.Read()
End Sub
End Module
------------------------------------------------------------------------------
因為不喜歡一堆數字連在一起,所以我打成一個數字一行比較好看 (我好龜毛orz)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.231.124.29
※ 編輯: dong2 來自: 125.231.124.29 (08/09 20:39)
討論串 (同標題文章)
完整討論串 (本文為第 1 之 5 篇):