Простые числа

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
hellmare
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 17.12.2007 (Пн) 0:36

Простые числа

Сообщение hellmare » 17.12.2007 (Пн) 13:14

Помогите пожалуйста советом. Как вывести простые числа введенной с клавиатуры последовательности чисел, принадлежащие одному десятку (например, 11, 13, 17, 19) или(41, 43, 47)? как я понимаю, надо в цикле проверить все числа из нужного десятка с помощью какой-то функции на простоту(простое число - делящееся только на себя и единицу), или разделить на все предыдущие числа и проверять остаток.
Ещё есть способ воспользоватся решетом Эратосфена.
Код: Выделить всё
Public Sub EratosthenesSieve(ByRef N As Long, ByRef P() As Long)
    Dim C As Boolean
    Dim I As Long
    Dim J As Long
    Dim K As Long
    Dim R As Long
    Dim S As Double

    If N > 200# Then
        R = Fix(N / (Log(N) - 2#) + 1#)
    Else
        R = Fix(1.6 * N / Log(N) + 1#)
    End If
    ReDim P(1# To R)
    P(1#) = 1#
    P(2#) = 2#
    P(3#) = 3#
    I = 4#
    Do
        P(I) = 0#
        I = I + 1#
    Loop Until Not I <= R
    J = 3#
    K = 3#
    Do
        I = 2#
        S = Sqr(K)
        C = True
        Do
            I = I + 1#
            If P(I) > S Then
                P(J) = K
                J = J + 1#
                C = False
            End If
        Loop Until Not (Fix(K / P(I)) * P(I) <> K And C)
        K = K + 2#
    Loop Until Not K <= N
End Sub

Но этот алгоритм не совсем понятен...
Может кто поможет?
Последний раз редактировалось hellmare 17.12.2007 (Пн) 14:25, всего редактировалось 2 раз(а).

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 17.12.2007 (Пн) 13:23

???? почему четверки то? Тем более, что 18, 13004, 13005 и 13006 отнюдь числа не простые. По теме: есть такая штука Решето Эратосфена - алгоритм вычисления (получения) простых чисел
Весь мир матрица, а мы в нем потоки байтов!

hellmare
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 17.12.2007 (Пн) 0:36

Сообщение hellmare » 17.12.2007 (Пн) 14:25

Viper, спасибо, пост подправлен.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 17.12.2007 (Пн) 15:06

На кой в реализации алгоритма везде типу Long упорно присваивается значение типа Double?
Весь мир матрица, а мы в нем потоки байтов!


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 35

    TopList