2016-08-24 28 views
0

我是編程和堆棧溢出博客的新手,所以希望我遵循'do's and dont's'正確。VB編程。整數數組和素數

我給了一個賦值問題,要求我在數組中存儲5個整數,並確定它們是否爲素數。是

我的問題如下:

  1. 如何將它們存儲到一個整數數組?

  2. 如何讓我的程序將每個輸入除以小於輸入的每個數字?

到目前爲止,我寫的代碼是這樣的:

子的Main()

Dim a, b, c, d, e As Integer 
    Dim isPrime As Boolean = True 

    Console.WriteLine("Please enter a value for a: ") 
    a = Console.ReadLine 
    Console.WriteLine("Please enter a value for b: ") 
    b = Console.ReadLine 
    Console.WriteLine("Please enter a value for c: ") 
    c = Console.ReadLine 
    Console.WriteLine("Please enter a value for d: ") 
    d = Console.ReadLine 
    Console.WriteLine("Please enter a value for e: ") 
    e = Console.ReadLine 



    If a Mod (a - 1) > 0 Or a = 2 And a <> 0 Then 
     Console.WriteLine("a is a prime number") 
    ElseIf a Mod (a - 1) = 0 Then 
     Console.WriteLine("a is not a prime number") 
    End If 

    If b Mod (b - 1) > 0 Or b = 2 And b <> 0 Then 
     Console.WriteLine("b is a prime number") 
    ElseIf b Mod (b - 1) = 0 Then 
     Console.WriteLine("b is not a prime number") 
    End If 

    If c Mod (c - 1) > 0 Or c = 2 And c <> 0 Then 
     Console.WriteLine("c is a prime number") 
    ElseIf c Mod (c - 1) = 0 Then 
     Console.WriteLine("c is not a prime number") 
    End If 

    If d Mod (d - 1) > 0 Or d = 2 And d <> 0 Then 
     Console.WriteLine("d is a prime number") 
    ElseIf d Mod (d - 1) = 0 Then 
     Console.WriteLine("d is not a prime number") 
    End If 

    If e Mod (e - 1) > 0 Or e = 2 And e <> 0 Then 
     Console.WriteLine("e is a prime number") 
    ElseIf e Mod (e - 1) = 0 Then 
     Console.WriteLine("e is not a prime number") 
    End If 

    Console.ReadKey() 
End Sub 

學習所有這些東西與所提供的先驗知識會讓事情變得困難,所以任何幫助將不勝感激!

回答

0
Dim a, b, c, d, e As Integer 

Console.WriteLine("Please enter a value for a: ") 
a = Console.ReadLine 
Console.WriteLine("Please enter a value for b: ") 
b = Console.ReadLine 
Console.WriteLine("Please enter a value for c: ") 
c = Console.ReadLine 
Console.WriteLine("Please enter a value for d: ") 
d = Console.ReadLine 
Console.WriteLine("Please enter a value for e: ") 
e = Console.ReadLine 

Dim intary() As Integer = {CInt(a), CInt(b), CInt(c), CInt(d), CInt(e)} 
For Each number As Integer In intary 
    Dim prime As Boolean = True 
    For x As Integer = 2 To number - 1 
     If number Mod x = 0 Then 
      prime = False 
      Exit For 
     End If 
    Next 
    If prime Then 
     Console.WriteLine(number.ToString & " IS a prime number") 
    Else 
     Console.WriteLine(number.ToString & " IS NOT a prime number") 
    End If 
Next 

整數數組在第一行創建。然後,這個概念是你想遍歷數組中的每個項目,並對其進行質數測試。所以,我們有一個for循環,它將對數組中的每個數字運行素數測試。對於每個數字,我們將測試編號從每個數字中的兩個一直劃分到給定的測試編號,然後檢查模餘數。如果其中任何一個返回零,除了數字本身,那麼我們沒有素數。在所示的例子中,我只是打印一個簡單的線路,說明每個數字是否通過或未通過測試......希望這會有所幫助,祝你好運,學習你的新語言!

請注意,您可以調暗數組,並添加每個新號碼,因爲它是從用戶檢索的,但您需要每次都重新調整陣列大小或調整其大小。我寫的例子只是使用你已有的輸入邏輯。如果作業沒有明確要求數組,那麼如果要使用列表,則可以編寫更清潔的解決方案。

+0

你是先生,是聖人。我現在完全明白了! –

+0

我將重新開始工作,所以有一天我可能會付出代價! –

+0

我很高興能幫到你!如果您對此主題沒有任何其他問題,最好將其標記爲已回答。這兩方面都表明這篇文章包含了其他StackOverflow用戶可以接受的解決方案,並且也以我的方式拍出了幾個要點;) – soohoonigan

0

這個問題的基本答案是採取用戶輸入,並在2和用戶輸入之間的每個這些數字上運行mod。

對於像我這樣開始的人來說,我的建議是,你不會與基本想法有所不同,它最終都是有意義的!