Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.05.2017, 02:42   #1
D_Fed
 
Регистрация: 09.05.2017
Сообщений: 5
По умолчанию Ускорить простую программу

Здравствуйте! Помогите пожалуйста с решетом Эратосфена.

Код:
Sub Prime(ByVal MaxNum As Long, cp As Long, p() As Long)

Dim i As Long, j As Long
Dim n() As Boolean

cp = 0
ReDim n(2 To MaxNum):
For i = 2 To MaxNum
   If Not n(i) Then
      cp = cp + 1
      ReDim Preserve p(1 To cp)
      p(cp) = i
      For j = i + i To MaxNum Step i
         n(j) = True
      Next
   End If
Next

End Sub
1. Каким образом заполнить массив только нечётными числами
(или которые заканчиваются на 1, 3, 7 или 9 )

2. Остановить выполнение, когда i^2 станет больше чем MaxNum.

Спасибо!
D_Fed вне форума Ответить с цитированием
Старый 09.05.2017, 11:15   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

1. Нечетные: If Chislo mod 2 <> 0 Then....
Заканчиваются на 1 3 7 9: If Instr("1379",Right(CSTR(Chislo),1)) > 0 then ...
2. Цикл не до MaxNum a до Sqr(MaxNum)
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 14.05.2017, 21:22   #3
D_Fed
 
Регистрация: 09.05.2017
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
1. Нечетные: If Chislo mod 2 <> 0 Then....
Заканчиваются на 1 3 7 9: If Instr("1379",Right(CSTR(Chislo),1)) > 0 then ...
2. Цикл не до MaxNum a до Sqr(MaxNum)
А для данной программы точно подходит? Могли бы показать куда поставить условия?
Я пробовал у меня выдаёт списки с левыми числами какими-то. Спасибо.
D_Fed вне форума Ответить с цитированием
Старый 15.05.2017, 08:11   #4
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 734
По умолчанию

Цитата:
Сообщение от D_Fed Посмотреть сообщение
Код:
cp = 0
- зачем cp принимать как входной параметр и занулять его сразу в программе?
Напишу программу на C++ и Asm для AVR. Черчение: sergeisky@yahoo.com.
Cuprum5 вне форума Ответить с цитированием
Старый 15.05.2017, 11:36   #5
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 734
По умолчанию

Цитата:
Сообщение от D_Fed Посмотреть сообщение
ReDim Preserve p(1 To cp)
- также нашел такую вещь, что cp здесь при 1 итерации =1 и переопредление массива дает массив из 1 элемента: p(1 To 1). Что-то я пришел к выводу что этот код бред полнейший. Почитайте про метод Эратосфена и напишите нормальную программу(с 0).
Парни, а знает кто-нибудь, что означает ":" в этой строке:
Цитата:
Сообщение от D_Fed Посмотреть сообщение
ReDim n(2 To MaxNum):
Напишу программу на C++ и Asm для AVR. Черчение: sergeisky@yahoo.com.
Cuprum5 вне форума Ответить с цитированием
Старый 15.05.2017, 13:15   #6
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Цитата:
Сообщение от Cuprum5 Посмотреть сообщение
знает кто-нибудь, что означает ":" в этой строке:
что после был еще какой-то оператор, но аффтар его удалил
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 15.05.2017, 17:28   #7
D_Fed
 
Регистрация: 09.05.2017
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
что после был еще какой-то оператор, но аффтар его удалил
Нет, дальше ничего не было.
D_Fed вне форума Ответить с цитированием
Старый 15.05.2017, 17:37   #8
D_Fed
 
Регистрация: 09.05.2017
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Cuprum5 Посмотреть сообщение
- также нашел...
Если не можете помочь, попрошу не флудить.
D_Fed вне форума Ответить с цитированием
Старый 15.05.2017, 18:28   #9
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 734
По умолчанию

Я и не флужу, говорю просто то, что в голову пришло.
Напишу программу на C++ и Asm для AVR. Черчение: sergeisky@yahoo.com.
Cuprum5 вне форума Ответить с цитированием
Старый 15.05.2017, 18:30   #10
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 734
По умолчанию

Составьте сначала алгоритм в своей голове по методу Эратосфена, а потом напишите нормальную программу, чтобы не было таких фатальных ошибок, как у Вас в 1 сообщении. Ждем с удовольствием!!!!!
Напишу программу на C++ и Asm для AVR. Черчение: sergeisky@yahoo.com.
Cuprum5 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно создать простую программу Ильдар Шарифуллин Фриланс 7 09.03.2017 14:20
Ускорить программу nikitosoleil Общие вопросы C/C++ 2 04.10.2015 15:20
Я хочу заказать простую программу tombender Работа с сетью в Delphi 3 07.03.2012 21:42
Не доделаю простую программу! He3HA4T Помощь студентам 0 22.12.2010 23:38
Как ускорить программу ? juan666777 Общие вопросы Delphi 2 02.05.2009 19:48