VBA Excel - простые числа

VBA Excel - простые числа

Вступление

Сито Эратосфена - это алгоритм, позволяющий нам найти все простые числа до определенного предела ( n- го числа). Это включает в себя цикл по всем числам от 2 до n, чтобы проверить, является ли активный номер кратным. Если это не кратно, то число является простым числом.
  • Дополнительная информация о Сите Эратосфена в Википедии: //en.wikipedia.org/wiki/Sieve_of_Eratosthenes

Алгоритм

Сначала нам нужно будет перечислить все числа до NbreMax.
  • 1 удаляется.
  • Выделите 2 и удалите все его кратные
  • Повторите операцию для номера 3 .
  • Выберите наименьшее неотмеченное число и затем удалите все его кратные числа (число 5, ...).
  • Повторяйте процесс, пока не достигнете целочисленной части корня n .

Все остальные числа (до n) являются простыми числами!

Функция

Этот тип функции можно легко изменить, чтобы он возвращал тип целого или длинного числа ... Код выполняется довольно медленно, поэтому мы ограничимся первыми 1500 простыми числами ...

 Функция NbPremiers_Eratosthene (Rang As Long) как вариант

Проверьте n-е простое число, используя сито Эратосфена

Dim i As Long, j As Long, k As Long, NbreMax As Long, est_premier (), Пометить как логическое значение

Если Rang> = 1 И Rang <= 1500, то

ReDim Preserve est_premier (Rang)

к = 0

NbreMax = 20 * Rang 'достаточно для того, чтобы звонить <1500

Flag = True

Для i = 2 до NbreMax

Для j = 2 To i

Если j = i, то выход для

Если i Mod j = 0, то Flag = False: выход для

следующий

Если флаг = True, то

Если я = 2, то

est_premier (k) = 1

k = k + 1

еще

est_premier (k) = я

k = k + 1

End If

еще

Flag = True

End If

Если k = Rang, то выход для

Далее я

NbPremiers_Eratosthene = est_premier (Rang - 1)

еще

NbPremiers_Eratosthene = "Rang trop grand ou trop petit (включает вход 1 и 1500 включительно)."

End If

Конечная функция

Вызов функции

Доступны два метода:

N-е простое число

 Sub Test ()

«Чтобы получить 499-е простое число:

MsgBox NbPremiers_Eratosthene (499)

End Sub

Получить список первых 99 простых чисел

 Sub ListeNbPrems ()

Получить список первых 99 простых чисел

Дим я так долго, Msg As String, Tb (98)

Для я = 1 до 99

Tb (i - 1) = NbPremiers_Eratosthene (i)

Далее я

MsgBox Tb (0) & "" & Tb (1) & "" & Tb (2) & "..." & Tb (UBound (Tb))

End Sub

Ссылка для скачивания

Загрузите образец рабочей книги здесь: //cjoint.com/14au/DHfoihzPEV2.htm
Предыдущая статья Следующая статья

Лучшие советы