Страница: 1 |
Помогите!! Как вытащить из N - го числа все простые числа??
Может стоит это число в цикле делить на числа от 2 до N, и смотреть остаток от деления... Mod 2 sne: достаточно до N/2 (ни одно целое положительное число N не будет без остатка делиться на ((N/2)+k), где k - тоже целое и положительное и не равное (N/2)) А в общем случае алгоритм следующий: 1. находим минимальный простой делитель (см. ответ sne): последовательно пытаемся делить N на числа от 2 до N/2, если нашлось число (m), на которое N делится без остатка, то запоминаем его и переходим на следующую итерацию, если такого числа нет, то N - простое число. (найденное таким образом число обязательно будет простым) 2. делим N на только что найденное число: N=N/m и выполняем пункт 1 для нового N. И так до тех пор, пока N не станет простым или равным единице. А я вот вообще не понял, что надо сделать Если найти все простые делители числа N, то надо k=2 do until n=1 or k*k>n do while n mod k=0 debug.print k n=n\k loop k=k+1 loop if n>1 then debug.print n Еслии нахождение простых чисел меньше N, то для малых N можно использовать решето Эратосфена, которое привел <=Alex=> Страница: 1 |
Вопрос: Простые числа?
Добавлено: 17.02.04 12:25
Автор вопроса: HyperMen | Web-сайт:
Ответы
Всего ответов: 5
Номер ответа: 1
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #1
Добавлено: 17.02.04 12:37
Номер ответа: 2
Автор ответа:
User Unknown
Вечный Юзер!
ICQ: uu@jabber.cz
Вопросов: 120
Ответов: 3302
Профиль | | #2
Добавлено: 17.02.04 12:40
Номер ответа: 3
Автор ответа:
Pashenko
ICQ: 176176951
Вопросов: 14
Ответов: 655
Профиль | | #3
Добавлено: 17.02.04 13:26
Номер ответа: 4
Автор ответа:
shuffle
Администратор
ICQ: 201502381
Вопросов: 15
Ответов: 737
Профиль | | #4
Добавлено: 17.02.04 16:26
Если я правильно понял, то тебе нужно это:
Dim arr(N) As Boolean
Dim i As Integer
For i = 2 To N
Dim k As Integer
Dim dw As Integer
For k = 2 To 20000000
dw = i * k
If dw <= N Then
arr(dw) = True
Else
Exit For
End If
Next
Next
'Напечатать
For i = 3 To 100
If Not arr(i) Then
Debug.Print i
End If
Next
Номер ответа: 5
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #5
Добавлено: 17.02.04 20:45