Вопрос задан 29.07.2023 в 10:25. Предмет Информатика. Спрашивает Ринчинов Ваня.

При помощи датчика случайных чисел вводится последовательность a, состоящая из N (случайное

трёхзначное число) целых положительных случайных 4-х значных чисел.Получить последовательность b, куда включить только простые числа из последовательности а.Обе последовательности вывести в соседние столбцы рабочего листа.на языке VBA
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Юртаева Дарья.
Function IsPrime(n As Integer) As Boolean
    Dim found As Integer
    found = n Mod 2 = 0
    Dim p As Integer
    p = 3
    Do While Not found And p * p <= n
        found = n Mod p = 0
        p = p + 2
    Loop
    IsPrime = Not found
End Function

Sub main()
    Randomize Timer
    Dim n As Integer, i As Integer, k As Integer
    n = 100 + Int(Round(899 * Rnd))
    ReDim a(1 To n) As Integer
    ReDim b(1 To n) As Integer
    i = 0: k = 0
    MsgBox n
    Do While i < n
        i = i + 1
        a(i) = 1000 + Int(Round(8999 * Rnd))
        If IsPrime(a(i)) Then
            k = k + 1
            b(k) = a(i)
        End If
    Loop
    Rows("1:1000").Clear
    Range(Cells(1, 1), Cells(n, 1)) = a
    For i = 1 To k
        Cells(i, 1) = a(i)
        Cells(i, 2) = b(i)
    Next i
    If k > 1 Then 'Сортировка второй колонки, так красивее
        Dim r As Range
        Set r = Range(Cells(1, 2), Cells(k, 2))
        r.Sort Range("B1")
    End If
    For i = k + 1 To n
        Cells(i, 1) = a(i)
    Next i
End Sub
0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для решения данной задачи на языке VBA, следует использовать функцию для проверки числа на простоту и затем отфильтровать последовательность a, оставив только простые числа. Ниже представлен код для выполнения этой задачи:

vba
Option Explicit ' Функция для проверки числа на простоту Function IsPrime(ByVal number As Long) As Boolean Dim i As Long If number < 2 Then IsPrime = False Exit Function End If For i = 2 To Sqr(number) If number Mod i = 0 Then IsPrime = False Exit Function End If Next i IsPrime = True End Function Sub FilterPrimes() Dim N As Long Dim a() As Long Dim b() As Long Dim i As Long, j As Long Dim aSize As Long, bSize As Long ' Задайте значение N вручную или получите его из ввода пользователя N = 10 ' Указываем размеры массивов aSize = N bSize = 0 ' Инициализируем массив a ReDim a(1 To aSize) ' Заполняем массив a случайными 4-значными числами Randomize For i = 1 To aSize a(i) = Int((9999 - 1000 + 1) * Rnd + 1000) Next i ' Инициализируем массив b ReDim b(1 To aSize) ' Фильтруем простые числа и записываем их в массив b For i = 1 To aSize If IsPrime(a(i)) Then bSize = bSize + 1 b(bSize) = a(i) End If Next i ' Выводим последовательности a и b на рабочий лист Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets("Sheet1") ' Замените "Sheet1" на имя вашего листа ' Выводим заголовки ws.Range("A1").Value = "Последовательность a" ws.Range("B1").Value = "Последовательность b" ' Выводим последовательность a For i = 1 To aSize ws.Cells(i + 1, 1).Value = a(i) Next i ' Выводим последовательность b For j = 1 To bSize ws.Cells(j + 1, 2).Value = b(j) Next j End Sub

Примечание:

  1. Вы можете изменить значение переменной N на нужное количество случайных чисел.
  2. Код создает два массива a и b для хранения последовательностей. Если вы хотите сохранить только простые числа в массиве b, то его размер будет меньше или равен размеру a, поэтому мы используем bSize, чтобы отслеживать текущий размер b.
  3. Код выводит последовательности на "Sheet1". Предполагается, что у вас есть рабочий лист с таким именем в вашей книге. Если у вас другое имя листа или вы хотите вывести данные на другой лист, замените "Sheet1" на нужное имя.
0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос