Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.72/50: Рейтинг темы: голосов - 50, средняя оценка - 4.72
 Аватар для Sasha_Smirnov
5562 / 1370 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30

Сколько их, простых

10.01.2011, 05:19. Показов 10524. Ответов 39

Студворк — интернет-сервис помощи студентам
Вот переделал программу от 04.12 2008 года... «по совету друзей»!
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
Option Explicit
Sub QuickSeekForPrimes()
'Программа отмечает в натуральном ряду (практически до 10^7—10^8) все простые числа
'и сообщает, сколько их имеется — до выбранного вами N.'
Const top As Variant = "100 000 000" ' "10 000 100"
If Not IsNumeric(Val(top)) Then MsgBox "Константа top должна быть числом.": Exit Sub
 
Dim tstart As Single, N, i, j, qP, approximation
N = Fix(Val(InputBox("До какого N?", "До N < 10 000 101 (больше — дольше!)", top)))
 
If N >= 1 And N < 10 ^ 8 + 101 Then
    ReDim flag(1 To N) As Long 'As Boolean экономил бы память - но это сужает диапазон
Else
    MsgBox "Измените N.", vbExclamation: Exit Sub
End If
 
approximation = Fix(N / (Log(N) - 1.08366)) - 2        'Legendre A. M. (Paris, 1808)
 
If N > 17 Then MsgBox "Expecting quantity of primes: " & approximation, vbInformation
 
            tstart = Timer 'засекли время начала выполнения программы
 
If N >= 2 Then
flag(2) = 1 'то есть «2 есть простое»'
qP = 1      'сосчитали первое простое число: 2'
End If
'Далее, для начала, берём все нечётные числа.'
For i = 3 To N Step 2: flag(i) = 1: Next i
 
For i = 3 To Sqr(N) Step 2 'Step 2, увы, только на 1% ускоряет поиск!'
    If flag(i) Then
        j = i ^ 2
            Do While j <= N
            flag(j) = 0 '«Вырубаем» каждое j-е число.'
            j = j + i
            Loop
    End If
Next i
'По сути, «просеяли» натуральный ряд через известное РЕШЕТО ЭРАТОСФЕНА.
For i = 3 To N: qP = qP + flag(i): Next
 
MsgBox "Среди чисел до " & N & " программа " & IIf(N < 2, "не ", "") & "нашла " & _
qP & IIf(Right(Str(qP), 1) = 1, " простое.", " простых.") & Chr(13) & Chr(13) _
& "Аппроксимация по Лежандру: " & approximation & Chr(10) _
& "Время выполнения " & Format(Timer - tstart, "0.000 с."), vbInformation
End Sub
Результаты для 10 в целой степени можно проверить вот тут: http://ega-math.narod.ru/Liv/Zagier.htm

Для нескольких млн работа идёт «молча» много секунд... может, кто знает, как отобразить расчётное время выполнения на типичной такой полосе, с движком или цветным заполнителем?
Миниатюры
Сколько их, простых   Сколько их, простых  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.01.2011, 05:19
Ответы с готовыми решениями:

Сколько простых чисел в диапазоне [a; b].
1.Сколько простых чисел в диапазоне . 2.Все компоненты вектора с нечетными номерами и значениями, не превосходящими по...

Нахождение простых, взаимно-простых и парно-простых чисел из указанного диапазона
Нужна помощь мне нужно создать программу для нахождение простых,взаимнопростых и парно простых чисел из указанного диапазона. у меня...

Посчитать, сколько простых чисел в интервале [1; N]
посчитать сколько простых чисел в интервале Добавлено через 55 минут Всё было бы отлично, но при н=2 должно быть 1 а не 0. Как...

39
 Аватар для Sasha_Smirnov
5562 / 1370 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
30.01.2014, 21:08  [ТС]
Студворк — интернет-сервис помощи студентам
У меня машина послабее (1 Гб ОЗУ, 2,28 ГГц) — взял для испытания 10 млн; с индикацией 40 секунд, без — 57 (но была включена интернет-видеотрансляция). Отлично!

Кроме того, использовал булев массив (вместо байтового); документ приложен; картинка так, для красоты.
Миниатюры
Сколько их, простых  
Вложения
Тип файла: doc primes_quantity_upto_N_4_BooleanArray.doc (54.5 Кб, 14 просмотров)
0
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
30.01.2014, 22:58
Лучший ответ Сообщение было отмечено как решение

Решение

По теме топика "Сколько их, простых / VBA" (а не по прогрессбару)
Если немного оптимизировать алгоритм, то можно существенно ускорить программу.
Без вывода чисел на лист (все лишнее закомментировал), до 535000100 мой ноутбук считает за 17,3 секунды (до 1 миллиарда - 32,6 секунды)
VBA Excel
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Sub Eratosphene()
    Const n As Long = 535000100
    Dim a() As Byte, n2 As Long, i As Long, j As Long, k As Long, t As Single ', kc As Long, cntRows As Long
    n2 = (n - 1) \ 2
    'cntRows = Rows.Count
    ReDim a(1 To n2) As Byte ', b(1 To cntRows, 1 To 1) As Long
    
    t = Timer
    k = 1
    'kc = 1
    'b(1, 1) = 2
    For i = 1 To n2
        If a(i) = 0 Then
            k = k + 1
            'If k > cntRows Then
            '    Cells(1, kc).Resize(cntRows, 1) = b
            '    DoEvents
            '    k = 1
            '    kc = kc + 1
            '    ReDim b(1 To cntRows, 1 To 1) As Long
            'End If
            'b(k, 1) = i + i + 1
            If CDbl(i) * (i + 1) * 2 <= n2 Then For j = 2 * i * (i + 1) To n2 Step i + i + 1: a(j) = 1: Next j
        End If
    Next i
    'Cells(1, kc).Resize(k, 1) = b
    MsgBox "От 1 до " & n & vbLf & "Количество простых чисел: " & k & vbLf & _
            "Аппроксимация по Лежандру: " & Fix(n / (Log(n) - 1.08366)) & vbLf & _
            "Время работы - " & Format(Timer - t, "0.000 сек.")
End Sub
Изображения
 
2
 Аватар для Sasha_Smirnov
5562 / 1370 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
31.01.2014, 01:54  [ТС]
И вот она у меня! Таблица простых чисел! Неожиданный бонус. Спасибо за это m-ch.
0
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
01.02.2014, 18:34
Цитата Сообщение от Sasha_Smirnov Посмотреть сообщение
И вот она у меня! Таблица простых чисел!
Сделал расчет до 8 000 000 000, получилось 367 783 654 простых чисел
Скачать архив со всеми этими числами можно по ссылке http://yadi.sk/d/TF1fD5IPH7juL

Возможно код не самый оптимальный по скорости, т.к. пришлось ждать несколько часов.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
Option Explicit
 
Dim a() As Byte
 
Sub EratospheneBit()
    Const n As Double = 8000000000#
    Dim n2, i, j, k As Long, t As Single, t1 As Single, FileNumber As Long
    n2 = Fix((n - 1) / 2)
    ReDim a(Fix(n2 / 8)) As Byte
    
    t = Timer
    t1 = Timer
    FileNumber = FreeFile
    Open "output.txt" For Output As #FileNumber
    Print #FileNumber, "2"
    k = 1
    For i = 1 To n2
        If Not getBit(i) Then
            k = k + 1
            If Timer - t1 > 120 Then t1 = Timer: Debug.Print k, Format(1# + i + i, "0"), Format(Timer - t, "0.000 сек.")
            Print #FileNumber, Format(1# + i + i, "0")
            If 2# * i * (i + 1) <= n2 Then For j = 2 * i * (i + 1) To n2 Step i + i + 1: setBit j: Next j
        End If
    Next i
    Close #FileNumber
    MsgBox "От 1 до " & n & vbLf & "Количество простых чисел: " & k & vbLf & _
            "Аппроксимация по Лежандру: " & Fix(n / (Log(n) - 1.08366)) & vbLf & _
            "Время работы - " & Format(Timer - t, "0.000 сек.")
End Sub
 
Sub setBit(j)
    Dim i As Long
    i = Fix(j / 8)
    a(i) = a(i) Or Choose(j - i * 8# + 1, 1, 2, 4, 8, 16, 32, 64, 128)
End Sub
 
Function getBit(j) As Boolean
    Dim i As Long
    i = Fix(j / 8)
    getBit = (a(i) And Choose(j - i * 8# + 1, 1, 2, 4, 8, 16, 32, 64, 128)) > 0
End Function
Изображения
 
1
 Аватар для KoGG
5646 / 1628 / 418
Регистрация: 23.12.2010
Сообщений: 2,450
Записей в блоге: 1
05.02.2014, 15:47
Лучший ответ Сообщение было отмечено как решение

Решение

А теперь собственно по ПРОГРЕССБАРУ.
Прогрессбар теперь замедляет работу не более, чем на 0,8% .
Для числа 535 000 100 время работы в Excel : 16.414 сек.

Имя ОС Microsoft Windows 7 Профессиональная
Версия 6.1.7601 Service Pack 1 Сборка 7601
Офис: Office 2007
Процессор Intel(R) Core(TM) i7 CPU 930 @ 2.80GHz, 2801 МГц, ядер: 4, логических процессоров: 8
Установленная оперативная память (RAM) 4,00 ГБ

Для ускорения работы прогрессбара и ограничения количества точек обновления, пришлось сильно изменить основной быстрый алгоритм от M-ch , тот который без побитовых операций.
Массив Flag пришлось объявить как Boolean, так как несколько раз под Windows XP вылетало сообщение "Out of Memory". В файле Word это сообщение выскакивает и для числа 535 000 100 и под Windows 7, так что по умолчанию стоит 400 000 000.

На более медленных компьютерах и системах количество точек обновления прогрессбара автоматически увеличится.
Вложения
Тип файла: xls Простое_число_8.xls (93.0 Кб, 10 просмотров)
Тип файла: doc primes_quantity_upto_N_8.doc (77.5 Кб, 6 просмотров)
1
 Аватар для KoGG
5646 / 1628 / 418
Регистрация: 23.12.2010
Сообщений: 2,450
Записей в блоге: 1
05.02.2014, 17:47
Да еще N>5, и здесь правильный диапазон распечатки последних 200.
Вложения
Тип файла: doc primes_quantity_upto_N_8.doc (61.5 Кб, 13 просмотров)
1
 Аватар для KoGG
5646 / 1628 / 418
Регистрация: 23.12.2010
Сообщений: 2,450
Записей в блоге: 1
06.02.2014, 12:15
На сверхмедленном компьютере стала заметна неравномерность хода прогрессбара в самом начале.
Теперь исправлено.
Сделана лазейка для чисел 1,2,3,4
Вложения
Тип файла: doc primes_quantity_upto_N_9.doc (62.5 Кб, 12 просмотров)
Тип файла: xls Простое_число_9.xls (93.5 Кб, 16 просмотров)
1
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
09.02.2014, 21:50
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от KoGG Посмотреть сообщение
пришлось сильно изменить основной быстрый алгоритм от M-ch , тот который без побитовых операций.
Не нашел ни одной строчки от своего кода.

Т.к. "побитный" алгоритм очень медленный и имеет ограничения по количеству чисел, реализовал алгоритм поблочного просеивания решетом Эратосфена.
Основные принципы:
1. определяем простые числа до корня из n
2. разбиваем на блоки числа до n и каждый блок просеиваем простыми.

Данный алгоритм позволяет существенно увеличить число n, до которого производится расчет.
Затрачиваемое время уменьшилось:
до 535 000 100 - 10 сек.
до 8 млрд. - менее 3х минут (в отличии от 4х часов в предыдущем алгоритме)
до 100 млрд. - 42 минуты
Думаю, что можно и до 1 трл. посчитать, займет это 8-12 часов (пока лень столько ждать)

Заполнение блоков получилось относительно равномерным по времени, поэтому нет необходимости извращаться с прогрессбаром. Прогрессбар в данной реализации практически не тормозит код.
Изображения
   
Вложения
Тип файла: xls EratospheneBlock.xls (41.0 Кб, 32 просмотров)
1
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
10.02.2014, 22:31
Цитата Сообщение от Sasha_Smirnov Посмотреть сообщение
Результаты для 10 в целой степени можно проверить вот тут: http://ega-math.narod.ru/Liv/Zagier.htm
Решил перепроверить значения функции п(x) для 10 в целой степени указанные в таблице № 4 из вышеупомянутой ссылки (ПЕРВЫЕ 50 МИЛЛИОНОВ ПРОСТЫХ ЧИСЕЛ).
Сошлись все значения, кроме п(10^10). У меня получилось 455 052 511.
Учитывая, что статья написана в конце 70х - начале 80х, понравилась там фраза - "Так скромно выписанные в ней значения π(x) потребовали тысяч часов трудоёмких вычислений". Мне сегодня для вычисления п(10^10) потребовалось менее 4 минут.

Так вот, разница на единицу наводит на мысли, либо у меня не правильный алгоритм (хотя странно, что совпали все другие числа), либо в статье допущена ошибка (опечатка), либо она попала туда при переводе.
Если есть желающие, то пересчитайте значение п(10^10) каким либо другим вариантом, либо дайте ссылку на источник, где подтверждаются мои вычисления.
Изображения
 
1
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
10.02.2014, 23:05
Сам нашел источник http://www.ismlab.usf.edu/isec... _there.pdf
где подтверждается число 455 052 511 для 10^10
1
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
11.02.2014, 06:46
Вот..., функция по созданию простых чисел
самая быстро-работающая, придуманная мной и модератором под ником Апостроф

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Public Function ProstChisla(Max&) As Long()
    'Возврат списка простых чисел
    Dim i&, f&, d&
    ReDim b(Max) As Byte
    ReDim PCh&(Max \ 2)
    PCh(0) = 1
    PCh(1) = 2
    i = 1
    d = 1
    Do
      For f = PCh(i) To Max Step PCh(i) 'вычеркиваем кратные последнему простому
        b(f) = 1
      Next f
      
      For f = PCh(i) + d To Max Step 2 'ищем следующее простое число
        If b(f) = 0 Then i = i + 1: PCh(i) = f: Exit For
      Next f
      d = 2
    Loop Until f > Max
    ReDim Preserve PCh(i)
    ProstChisla = PCh
End Function
0
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
11.02.2014, 09:02
Цитата Сообщение от FelixMacintosh Посмотреть сообщение
самая быстро-работающая
С оценкой не соглашусь,
Набросал за 5 минут функцию, которая базируется на ранее опубликованном алгоритме, работает более чем в 2 раза быстрее для больших n

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Function Primes(n&) As Long()
    Dim i&, j&, k&, a() As Byte, b&()
    If n < 2 Then Exit Function
    ReDim a(n) As Byte, b&(1 To Fix(n / Log(n) * 1.11) + 100)
 
    k = 1
    b(1) = 2
    For i = 3 To n Step 2
        If Not a(i) Then
            k = k + 1
            b(k) = i
            If CDbl(i) * i <= n Then For j = i * i To n Step i + i: a(j) = True: Next j
        End If
    Next i
    ReDim Preserve b&(1 To k)
    Primes = b
End Function
2
 Аватар для Апострофф
9908 / 3928 / 742
Регистрация: 11.10.2011
Сообщений: 5,908
11.02.2014, 11:28
Ещё пять копеек (процентов) к производительности
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Function Primes2(n&) As Long()
    Dim i&, j&, k&, a() As Byte, b&()
    If n < 2 Then Exit Function
    ReDim a(1 To n) As Byte, b&(1 To Fix(n / Log(n) * 1.11) + 100)
    k = 1
    b(1) = 2
    For i = 3 To Int(Sqr(n)) Step 2
        If Not a(i) Then
            k = k + 1: b(k) = i
            For j = i * i To n Step i + i: a(j) = True: Next j
        End If
    Next i
    For i = i To n Step 2
        If Not a(i) Then k = k + 1: b(k) = i
    Next i
    ReDim Preserve b&(1 To k)
    Primes2 = b
End Function
3
 Аватар для KoGG
5646 / 1628 / 418
Регистрация: 23.12.2010
Сообщений: 2,450
Записей в блоге: 1
24.02.2014, 10:07
Файл EratospheneBlock.xls от M-ch с установленным по умолчанию числом 535 000 100 можно использовать как интегральный тест производительности конфигурации компьютера и системы для линейных задач VBA, без распараллеливания процессов (в Net Basic).
Пример для 5-ти машин и систем. Везде Office 2007.

1-ый : Netbook E-machine , Windows XP SP3, процессор Intel Atom N450 1,66ГГц , RAM 1 Гб - 104,125 сек - индекс производительности 1.0 ;

2-ой : ноутбук Toshiba Toshiba Satellite A300 , Windows Vista, процессор Intel Pentium Dual Core T4200 2,0ГГц , RAM 3 Гб - 26,152 сек - индекс производительности 3.98 ( раз быстрее Atom-а) ;

3-ий : стационарный, Windows XP SP3, процессор Intel Core 2 Quard Q6600 2,4ГГц , RAM 4 Гб - 20,672 сек - индекс 5.04 «Atom»-ов ;

4-ий : стационарный, Windows 7, процессор Intel Core i7 930 2,8ГГц , RAM 4 Гб - 15,008 сек - индекс 6.94 Атомов ;

5-ый : ноутбук Asus X550LC-X0074 , Windows 8, процессор Intel Core i7 4500U 1,8 Ггц, RAM 4 Гб - 12,328 сек - индекс 8.45 Атомов.
2
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
24.02.2014, 10:24
Лучший ответ Сообщение было отмечено как решение

Решение

Спасибо, что нашли разные компьютеры, чтобы посчитать скорость

Добавлено через 4 минуты
я завидую тому, что у вас столько свободного времени есть
1
 Аватар для KoGG
5646 / 1628 / 418
Регистрация: 23.12.2010
Сообщений: 2,450
Записей в блоге: 1
31.08.2014, 13:16
Прочитал недавно "Бес предела" Головачева, вдохновило вернуться к теме.
Отдельно считаем количество, отдельно при желании выводим на лист.
Вложения
Тип файла: xls EratospheneBlock_M-ch_2.xls (60.0 Кб, 34 просмотров)
2
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
31.08.2014, 13:25
Прикольно, мне особенно кнопка понравилась, и прогресс-бар

Добавлено через 1 минуту
Реализацию, я пока еще не понял ..разбираюсь

Добавлено через 4 минуты
..100 секунд на моей машине потребовалось, ..вот
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
01.09.2014, 06:00
Код из поста №36

Atom N270

Тот же код, на той же машине, скомпилированный в vb6
1
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
28.02.2016, 14:21
Цитата Сообщение от SoftIce Посмотреть сообщение
Тот же код, на той же машине, скомпилированный в vb6
Судя по времени работы на Atom N270, то скомпелированный код на VB6 почти в 4 раза работает быстрее в математических расчетах по сравнению с VBA

Решил перенести код по подсчету количества простых чисел на FreeBasic, время работы (без изменения кода программы) на моей машине при подсчете до n=535000100 - 4 секунды (VBA - 10 секунд)
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Function Eratosphen(ByVal n As Long) As Long
    Const s As Long = 1000000 'размер блоков
    Const MaxB As Long = 100000 'размер массива для хранения простых до корня из n
    
    Dim a() As Boolean 'массив для хранения признака простоты числа
    Dim b() As Long 'массив простых до корня из n
    Dim sqrN As Long, n2 As Long
    Dim i As Long, j As Long, k As Long 'счетчики
    Dim cnt As Long 'количество простых до корня из n
    Dim cntN As Long 'количество простых до n, для больших n (более 50 млрд.) нужен тип Double, для малых - можно использовать Long
    Dim start As Long, begin As Long, b2 As Long
    
    n2 = (Fix(Sqr(n)) - 1) \ 2 'корень из n деленное на 2
    ReDim a(n2) As Boolean, b(MaxB) As Long 'переопределяем массивы
    For i = 1 To n2
        If Not a(i) Then
            cnt = cnt + 1
            b(cnt) = i + i + 1
            If 2# * i * (i + 1) <= n2 Then For j = 2 * i * (i + 1) To n2 Step i + i + 1: a(j) = True: Next j
        End If
    Next i
 
    For k = 0 To Fix(n / s)  'разбиваем поблочно интервал до n
        ReDim a(s) As Boolean 'переопределяем очередной массив для текущего блока
        start = k * CDbl(s) 'первое число в теущем блоке
        For i = 1 To cnt 'пробегаем по всем простым числам
            b2 = CDbl(b(i)) * b(i) 'квадрат текущего простого числа
            If b2 >= start Then
                If b2 > start + s Then Exit For Else begin = b2 - start
            Else
                begin = Fix((start + b(i) - 1) / b(i) / 2) * 2 * b(i) + b(i) - start
            End If
            For j = begin To s Step b(i) + b(i) 'запускаем решето
                a(j) = True
            Next j
        Next i
        For i = 1 To IIf(s < n - start, s, n - start) Step 2 'проверяем какие числа простые в текущем блоке
            If Not a(i) Then cntN = cntN + 1 'считаем их, при желании можно выводить в файл
            'особое внимание к числу 2, т.к оно пропускается, вместо него считается число 1
        Next i
    Next k
    Eratosphen = cntN
End Function

Всего в 2,5 раза быстрее чем VBA, это хуже, чем VB6
win 8.1, i7-3630QM 2.4GHz, RAM 8ГБ

FreeBasic позволяет легко реализовать потоки, алгоритм функции также можно разбить на параллельные вычисления.
Итого время подсчета для n=535000100 - примерно 1 секунда (что в 10 раз быстрее VBA)
Время расчета до 10^9 - 2 секунды
до 10^10 - 21 секунда
до 10^12 - 42 минуты

Функцию реализовал в виде внешней DLL на FreeBasic, которая подключается и используется в VBA (Excel)
Исходник и скомпелированная DLL во вложении

PS:
Конечная цель перевода в DLL - увеличение скорости математических вычислений за счет более быстрого языка (по сравнения с VBA) и параллельных потоков.
Изображения
 
Вложения
Тип файла: zip Eratoshpen.zip (31.8 Кб, 30 просмотров)
1
1 / 1 / 0
Регистрация: 17.09.2017
Сообщений: 1
17.09.2017, 20:28
Добрый вечер. Ребят, спасибо за решение на Экселе.. а где бы найти решение этого решета - но полное.. т.е. - мне нужно, к примеру, до 1000.. Эксель строит таблицу от 1 до 1000, затем ищет простые цифры и или зачёркивает по порядку с нарастанием (одна полоса, две , три) - или разными цветами.. и в табличке ПОКАЗАНЫ ВСЕ цифры, а не только простые.. вот как например сделано в Гифке на Вики.. заранее спасибо..
Миниатюры
Сколько их, простых  
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.09.2017, 20:28
Помогаю со студенческими работами здесь

Выяснить сколько простых чисел находится в интервале
14. Выяснить сколько простых чисел находится в интервале , и распечатать их. Для определения, является ли очередное число простым,...

Определить, сколько простых делителей имеет число
Долго болел и плохо понял тему,завтра нести задачи. Пожалуйста решите и объясните задачи,ну или просто решите.Благодарность моя будет...

Определить, сколько простых чисел было введено
Вводятся целые числа до первого числа, которое меньше двух. Определить, сколько простых чисел было введено.

Сколько простых чисел взаимно простые с 42 между 30 и 70
Сколько простых чисел взаимно простые с 42 между 30 и 70.

Определить сколько среди введенных чисел простых
С клавиатуры вводится последовательность натуральных чисел, признак окончания ввода - 0. Определить сколько среди введенных чисел...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru