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

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

Вступ

Сито Ератосфена - це алгоритм, що дозволяє знайти всі прості числа до певної межі ( n- го числа). Це передбачає циклічне проходження всіх чисел від 2 до n, щоб перевірити, чи активне число є кратним. Якщо це не кратне число, то число є простим числом.
  • Докладніше про сито Ератосфена на Вікіпедії: //en.wikipedia.org/wiki/Sieve_of_Eratosthenes

Алгоритм

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

Всі інші числа (до n) є простими числами!

Функція

Цей тип функції можна легко змінити, щоб повернути тип цілочисельного або довгого числа ... Код виконується досить повільно, тому ми обмежимося першими 1500 простими числами ...

 Функція NbPremiers_Eratosthene (Ранг як довгий) як варіант

Перевірте наявність n-го простого числа, використовуючи сито Ератосфена

Dim i As Long, j як довгий, k як довгий, NbreMax як довгий, est_premier (), прапор як булевий

Якщо Rang> = 1 І Rang <= 1500 Потім

ReDim Preserve est_premier (Ран)

k = 0

NbreMax = 20 * Rang 'достатньо для випуску <1500

Flag = True

Для i = 2 Для NbreMax

Для j = 2 До i

Якщо j = i, тоді вийдіть для

Якщо i Mod j = 0, то Flag = False: Exit For

Далі

Якщо Flag = True Тоді

Якщо i = 2 Тоді

est_premier (k) = 1

k = k + 1

Ще

est_premier (k) = i

k = k + 1

End If

Ще

Flag = True

End If

Якщо k = Rang, тоді вийдіть для

Далі i

NbPremiers_Eratosthene = est_premier (Ранг - 1)

Ще

NbPremiers_Eratosthene = "Висхідний тропік тропічний (входить 1 і 1500 включений)."

End If

Функція End

Виклик функції

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

N-й простий номер

 Sub Test ()

'Щоб отримати 499-й простий номер:

MsgBox NbPremiers_Eratosthene (499)

End Sub

Отримати список перших 99 простих чисел

 Sub ListeNbPrems ()

Отримати список перших 99 простих чисел

Dim i As Long, Msg As String, Tb (98)

Для i = 1 до 99

Tb (i - 1) = NbPremiers_Eratosthene (i)

Далі i

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

End Sub

Посилання для завантаження

Завантажте зразок робочої книги тут: //cjoint.com/14au/DHfoihzPEV2.htm
Попередня Стаття Наступна Стаття

Кращі Поради