作者xtimer ()
看板Visual_Basic
标题Re: [VB2005][心得] 关於1-1000的质数
时间Sat Sep 27 03:11:22 2008
※ 引述《keria (住左住右超好看)》之铭言:
<恕删>
: 记得之前上数学课时,
: 有提到求质数的方式,
: 就是小於该数的平方根的质数无法整除时,
: 它也会是个质数。
: 基於此概念,
: 写了一个如下的程式,
: 请在VB.Net(2003)的Application中,
: 程式使用一个TextBox、Button、ListBox:
: ===程式段开始===
: Private Sub Button1_Click(ByVal sender As System.Object, _
: ByVal e As System.EventArgs) Handles Button1.Click
: Dim aryPrime(0) As Double
: Dim sqrtNum As Double
: Dim Index1 As Double, Index2 As Double
: aryPrime(0) = 2
: For Index1 = 3 To CDbl(TextBox1.Text)
: sqrtNum = Fix(Math.Sqrt(Index1))
: For Index2 = 0 To UBound(aryPrime)
: If aryPrime(Index2) <= sqrtNum Then
: If (Index1 Mod aryPrime(Index2)) = 0 Then
: Exit For
: End If
: Else
: If Index2 = UBound(aryPrime) Then
: ReDim Preserve aryPrime(UBound(aryPrime) + 1)
: aryPrime(UBound(aryPrime)) = Index1
: Exit For
: End If
: End If
: Next Index2
: Next Index1
: ListBox1.Items.Clear()
: For Index1 = 0 To UBound(aryPrime)
: ListBox1.Items.Add(aryPrime(Index1))
: Next
: End Sub
: ===程式段结束===
: 其中,TextBox输入一个大於3的数,
: 它就会在ListBox中列出1~输入数的所有质数。
先抱歉翻这麽旧的文出来发问
我做的方法是
===程式段开始===
Module Module1
Sub Main()
Dim input, temp, n, k, s, x, count As Integer
Dim array(100, 0)
s = 0
count = 0
Console.Write("请输入一个2~10000的整数 ")
input = Console.ReadLine
For temp = 2 To input
k = 0
For n = 2 To 100
If n < temp And temp Mod n = 0 Then
k += 1
array(s, 0) = temp
s += 1
End If
Next
If k = 1 Then
count += 1
End If
Next
Console.WriteLine("所包含的质数有")
For x = 0 To s Step 1
Console.WriteLine(x, 0)
Next
Console.WriteLine("共" & count & "个")
Console.ReadKey()
End Sub
End Module
====程式段结束===
须做出输入1~10000的数 得出所输入的数的所有质数 并计共有几个质数
绿字为计次部份
红字为求质数部份
我写的 计次部份没有问题
可是求质数部份 怎麽跑都不对
能某请大大们替我解答一下 哪里错了?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.143.39.127
※ 编辑: xtimer 来自: 220.143.39.127 (09/27 03:12)