Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Простые числа? Добавлено: 17.02.04 12:25  

Автор вопроса:  HyperMen | Web-сайт: www.phpworld.net.ru

Помогите!!

Как вытащить из N - го числа все простые числа??

Ответить

  Ответы Всего ответов: 5  

Номер ответа: 1
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #1
Добавлено: 17.02.04 12:37

Может стоит это число в цикле делить на числа от 2 до N, и смотреть остаток от деления...

Ответить

Номер ответа: 2
Автор ответа:
 User Unknown



Вечный Юзер!

ICQ: uu@jabber.cz 

Вопросов: 120
Ответов: 3302
 Профиль | | #2 Добавлено: 17.02.04 12:40

Mod

Ответить

Номер ответа: 3
Автор ответа:
 Pashenko



ICQ: 176176951 

Вопросов: 14
Ответов: 655
 Профиль | | #3 Добавлено: 17.02.04 13:26

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 не станет простым или равным единице.

Ответить

Номер ответа: 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-сайт: sharpc.livejournal.com
 Профиль | | #5
Добавлено: 17.02.04 20:45

А я вот вообще не понял, что надо сделать :(

Если найти все простые делители числа 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 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам