作者dong2 (咚兔)
看板Visual_Basic
标题[VB2005][心得] 关於1-1000的质数
时间Wed Aug 9 20:38:25 2006
小弟这个礼拜暑修开始学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)