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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.12.2008, 23:10   #1
Verochka
Пользователь
 
Регистрация: 18.11.2008
Сообщений: 16
По умолчанию простые числа.окружность.

помогите пожалуйтса решить задачи,желательно с обьяснением...
1)Найти все такие простые числа,не превосходящие заданного N,двоичная запись которых представляет собой симметричную последовательность нулей и едениц(начинающуюся еденицей)
2)Определить радиус и центр окружности,на которой лежит наибольшее число точек заданного на плоскости множества
Verochka вне форума Ответить с цитированием
Старый 25.12.2008, 17:00   #2
Verochka
Пользователь
 
Регистрация: 18.11.2008
Сообщений: 16
По умолчанию

хотя бы с окружностью............очень прошу............:-(
Verochka вне форума Ответить с цитированием
Старый 25.12.2008, 17:45   #3
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию Объяснение (математические начала)

Для окружности координаты её точек связаны с радиусом так:

(x–x0)² + (y–y0)² = r² [1]
(x — абсциссы точек; y — их ординаты; r — радиус окружности, а x0 и y0 — координаты её центра)

Поэтому среди
Цитата:
Сообщение от Verochka Посмотреть сообщение
точек заданного на плоскости множества
{а заданы они, я понимаю, так: (7; 8), (-5,09; 3,5), (0;777) — то есть своими координатами на плоскости} надо искать совпадения с уравнением искомой окружности*.

Как программно задать перебор сравнений по формуле [1], вас, возможно, проинформируют более усердные форумчане... Задачка-то ваша не для первоклассников!
_______________________________
* Три точки всегда лежат либо на окружности, либо на прямой, а четвёртая (на той же плоскости) — "не обязана"**. Её принадлежность одной из окружностей (с неким радиусом, равным r) определяется равенством
(x4–x0)^2 + (y4–y0)^2 = r^2, при том что для первых трёх:
(x1–x0)^2 + (y1–y0)^2 =(x2–x0)^2 + (y2–y0)^2 =(x3–x0)^2 + (y3–y0)^2 = r^2

___________________
** казус в том, что в 999 999 случаях из миллиона (если преподаватель сам не подбирает координаты точек исходного массива) такой точки программа не найдёт:-((

Последний раз редактировалось Sasha_Smirnov; 25.12.2008 в 19:58. Причина: сноска к сноске.
Sasha_Smirnov вне форума Ответить с цитированием
Старый 25.12.2008, 18:35   #4
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию А можно так?

Цитата:
Сообщение от Verochka Посмотреть сообщение
хотя бы с окружностью............очень прошу............:-(
Для начала предлагаю: не с окружностью, а с кругом.
То есть формулу [1] "расширить": (x–x0)² + (y–y0)² ≤ r².


Иначе программу очень трудно будет испытывать (см. выше **)!

А уж затем, когда всё заработает, подобрать входной массив.

Последний раз редактировалось Sasha_Smirnov; 25.12.2008 в 22:38. Причина: предложение для продвижения.
Sasha_Smirnov вне форума Ответить с цитированием
Старый 26.12.2008, 15:37   #5
Verochka
Пользователь
 
Регистрация: 18.11.2008
Сообщений: 16
По умолчанию

Задачка-то ваша не для первоклассников!
в этом и проблемма!нам бы еще КН по человечески преподавали,то я может и смогла бы решить!у меня складывается ощущение,что наша преподавательница сама не знает как их решать!:-)
Verochka вне форума Ответить с цитированием
Старый 26.12.2008, 22:23   #6
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию Моральная сторона вопроса

Я так и думал!
Как-то раз я делал на Паскале расчёт распиловки фанерных щитов, так препод (по слухам) предлагал мой «продукт» работникам пилорамы... Тогда, правда, на пилорамах офисной техники (кроме телефона) не стояло. В 1996-м.
Ну я тоже не знаю, как решать. Меня заинтересовали симметричные простые числа. А с этой окружностью — полное болото!
Извините, а КН — компьютерная наука?! (Если так — хоть поржу.)

Последний раз редактировалось Sasha_Smirnov; 26.12.2008 в 22:25. Причина: вопрос.
Sasha_Smirnov вне форума Ответить с цитированием
Старый 28.12.2008, 01:04   #7
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию Ничего-ничего-ничего

Цитата:
Сообщение от Verochka Посмотреть сообщение
все такие простые числа...
я нашёл. Как отлажу — выложу.

От вас потребуется лишь умение нажимать альт-F8 (открыв Word или Excel) и знание русского языка. (Английский — приветствуется. И только.)

Последний раз редактировалось Sasha_Smirnov; 28.12.2008 в 03:35.
Sasha_Smirnov вне форума Ответить с цитированием
Старый 28.12.2008, 04:05   #8
Min
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 239
По умолчанию

ну про окружности можно попробовать так:
найти самый длинный отрезок. в центре него будет центр окружности, а радиус равен половине этого отрезка
Надо бы избавиться от привычки ставить многоточие.....
Min вне форума Ответить с цитированием
Старый 28.12.2008, 05:51   #9
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию Обещанное

Вот: нашёл и пересчитал. Если интересует печать, загляните, Verochka, в раздел Форум программистов > Microsoft Office и VBA

Код:
Option Explicit
Sub MirrorBinaryPrimes()
'Программа отмечает в натуральном ряду (примерно до 10^6) все простые числа,'
'двоичное (binary) представление которых симметрично относительно их центра,'
'и сообщает, сколько их имеется — до выбранного вами N.'
'(Выполняется в среде VBA-приложений: Access, Excel, Visio, Word etc.)'

Const top As Variant = "10 000"
If Not IsNumeric(Val(top)) Then MsgBox "Константа должна быть числом.": Exit Sub

Dim N As Long, i As Long, j As Long, qP As Long, PriznakTogo As Boolean
N = Fix(Val(InputBox("До какого N?", "До N <= 1 000 000", Val(top)))) 'Ввод N.'
If N >= 3 And N < 10 ^ 6 + 1 Then _
ReDim flags(1 To N) As Boolean Else: MsgBox "Измените N.": Exit Sub
                            
'Берём для начала все нечётные положительные числа, за исключением единицы (она не простое число).'
For i = 3 To N Step 2: flags(i) = True: Next i

For i = 3 To Fix(Sqr(N)) Step 2
        If flags(i) Then
            j = i + i
                Do While j <= N
                flags(j) = False '«Вырубаем» из нечётного ряда чисел каждое j-е число.'
                j = j + i
                Loop
        End If
Next i
'По сути, просеяли натуральный ряд (нечётный) через РЕШЕТО ЭРАТОСФЕНА.'

'Вывод.'
For i = 3 To N
PriznakTogo = flags(i) And IsMirrorBin(i)
qP = qP + IIf(PriznakTogo, 1, 0)
If PriznakTogo Then MsgBox i  'показ искомых чисел'
Next i

MsgBox "Среди чисел до " & N & " программа нашла простых: " & qP & "," & vbCr & _
"таких, что при записи их в двоичном представлении" & vbCr & "получаем симметричную строку."
End Sub

Function IsMirrorBin(ByRef i) As Boolean
Dim d As Integer, OctMask As String, BinMask As String
OctMask = Oct(i) 'Сначала представляем в восьмеричном счислении...'

For d = Len(OctMask) To 1 Step -1 'Сканируем восьмеричную «маску» справа налево.'
BinMask = Choose(Mid$(OctMask, d, 1) + 1, _
"000", "001", "010", "011", "100", "101", "110", "111") & BinMask
'И заменяем соответственно цифры 0, 1, 2, 3, 4, 5, 6, 7 их ДВОИЧНЫМИ аналогами.'
Next d

BinMask = Mid$(BinMask, InStr(BinMask, "1"))   'убор начальных нулей из BinMask'
If BinMask = StrReverse$(BinMask) Then IsMirrorBin = True ': MsgBox BinMask & " " & i'
'Функция IsMirrorBin (по умолчанию равная «Нет») при «зеркальности» BinMask говорит «Да».'
End Function
Первые 11 "перлов" вычислил на бумажке: 3 (двоично: 11), 5 (101), 7 (111), 17 (10001), 31 (11111), 73 (1001001), 107 (1101011), 127 (1111111), 257 (100000001), 313 (100111001), 443 (110111011).

Последний раз редактировалось Sasha_Smirnov; 28.12.2008 в 23:23. Причина: ссылка на «печатный» вариант программы.
Sasha_Smirnov вне форума Ответить с цитированием
Старый 28.12.2008, 06:06   #10
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию И что?

Цитата:
Сообщение от Min Посмотреть сообщение
ну про окружности можно попробовать так:
найти самый длинный отрезок...
...и 99,999...%, что лишь эти 2 точки и окажутся на этой окружности.
Всё-таки лучше для круга программу написать, для начала.
Sasha_Smirnov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Простые числа Verochka Помощь студентам 14 02.12.2008 20:30
Простые числа werser Помощь студентам 8 18.06.2008 07:24
Delphi и простые числа razoom Фриланс 6 13.02.2008 14:09
простые числа Акашаев Нурлан Паскаль, Turbo Pascal, PascalABC.NET 2 05.12.2007 12:23