[VB2005][心得] 關於1-1000的質數

看板Visual_Basic作者 (咚兔)時間18年前 (2006/08/09 20:12), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/5 (看更多)
小弟這個禮拜暑修開始學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)
文章代碼(AID): #14sT4HPk (Visual_Basic)
文章代碼(AID): #14sT4HPk (Visual_Basic)