【问题标题】:VB programming. Integer array and prime numbersVB编程。整数数组和素数
【发布时间】:2016-08-24 01:32:01
【问题描述】:

我是编程和堆栈溢出博客的新手,所以希望我能正确地遵循“做与不做”。

我收到了一个作业问题,要求我将 5 个整数存储在一个数组中,并确定它们是否为质数。

我的问题如下:

  1. 如何将它们存储到整数数组中?

  2. 如何让我的程序将每个输入除以每个小于输入的数字?

目前我写的代码是这样的:

子主()

    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

用所提供的先验知识学习所有这些东西使事情变得困难,因此非常感谢任何帮助!

【问题讨论】:

    标签: vb.net primes


    【解决方案1】:
    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 循环,它将对数组中的每个数字运行我们的素数测试。对于每个数字,我们将测试数字除以从 2 一直到给定测试数字的每个数字,并检查 mod 余数。如果除了数字本身之外,其中任何一个都返回零,那么我们就没有素数。在显示的示例中,我只是打印了一个简单的行,说明每个数字是通过还是未通过测试...希望这有助于您学习新语言并祝您好运!

    旁注,您可以调暗数组并添加从用户检索到的每个新数字,但您每次都需要重新调暗或调整数组大小。我写的例子只是使用了你已有的输入逻辑。如果分配没有明确要求数组,那么如果您要使用列表,则可以编写更简洁的解决方案。

    【讨论】:

    • 先生,您是圣人。我现在完全明白了!
    • 我要回去工作了,所以总有一天我可以把它付清!
    • 很高兴能帮上忙!如果您对此主题没有任何次要问题,最好将其标记为已回答。这两者都将帖子标记为包含其他 StackOverflow 用户可接受的解决方案,并且还以我的方式拍摄了几点;)
    • 我遇到的唯一问题是程序(我稍微定制了一点)似乎想在计算后直接退出。
    • 您可以先检查 2-case 并让循环在sqrt(number) 处停止,步长为 2
    【解决方案2】:

    这个问题的基本答案是接受用户输入,并在 2 和用户输入之间的每个数字上运行一个 mod。

    对于像我一样刚起步的人,我的建议是,你不要偏离基本理念,最终一切都会变得有意义!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-08
      相关资源
      最近更新 更多