|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
04.12.2008, 18:30 | #1 |
Особый статус
Участник клуба
Регистрация: 24.11.2008
Сообщений: 1,535
|
Кому простые числа даром?
Option Compare Text
Option Explicit Sub PrimeTime() 'печать простых чисел, равных или меньших, чем N '[выход: <Ctrl>+<Break>, но в Excel лучше не надо!] DoEvents Const N As Variant = 10101 '''''''''''Сюда вводим N. Dim spacer As String 'разделитель (при печати) Dim i, T 'делитель i и делимое T (кандидат в простые) Dim proportion, radical Dim d0 As Date, t0 As Date, t01 As Single 'Переменные Dim d1 As Date, t1 As Date, t02 As Single 'для хронометража. SendKeys "^{home}", True 'В начало документа (раб. листа). 'Проверка, что введённое N - число. If Not IsNumeric(N) Then _ MsgBox "Alas, N isn’t numeric!": Exit Sub If InStr(Application, "Excel") Then If N > 821651 Then MsgBox "N is too big. Bye!": Exit Sub If N > 40 Then spacer = "{enter}" Else spacer = "{tab}" ElseIf InStr(Application, "Word") Then spacer = "{tab}" Else: spacer = "{tab}" End If T = CDec(Fix(N)) If T < 0 Then T = -T MsgBox "N = " & T radical = Sqr(T) 'Вычисление квадратного корня. MsgBox "square radical(" & T & ") " & _ IIf(radical = Fix(radical), "= ", "~ ") & radical If Right(Str(Fix(T)), 1) Like "[02468]" Then T = Fix(T) - 1 'сделали верхнюю грань нечётной (что результата не меняет) If T < 2 Then MsgBox "Простых чисел не нашлось.": Exit Sub If T = 2 Then SendKeys "{2}^{home}", True: Exit Sub If T = 3 Then SendKeys "{3}{tab}{2}^{home}", True: Exit Sub If T = 5 Then SendKeys "{5}{tab}{3}{tab}{2}^{home}", True: Exit Sub If T > 17 Then MsgBox "Expecting quantity of primes: " & vbTab & _ Fix(T / (Log(T) - 1.08366)) - 2 '(A. M. Legendre. Paris, 1808) d0 = Date: t0 = Time: t01 = Timer 'Отсчет времени. i = CDec(Fix(radical)) If Right(Str(i), 1) Like "[02468]" Then i = i + 1 'сделали делитель нечётным Do proportion = T / i If proportion = Fix(proportion) Then Select Case i Case 1 'а значит, делителей, кроме "1", не встретилось SendKeys T & spacer, True 'печатается простое число... '...и (если надо) - составное число, с 2-мя множителями 'Case Else 'SendKeys "{tab}" & T & " = " & i & "·" & T / i & "{enter}", True End Select T = T - 2 If Right(Str(T), 1) = "5" Then T = T - 2 If T = 3 Then SendKeys "{5}{Tab}{3}{Tab}{2}", True: Exit Do radical = Sqr(T) i = CDec(Fix(radical)) + 2 If Right(Str(i), 1) Like "[02468]" Then i = i + 1 If Right(Str(i), 1) = "7" Then i = i - 2 'сделали новое i (для нового «кандидата» T) оканчивающимся на нечётное End If i = i - 2 Loop SendKeys "^{home}", True 'Возврат в начало документа/рабочего листа. 'Вывод сообщений о времени выполнения (если оно больше 0,1 с). CHRONOS: d1 = Date: t1 = Time: t02 = Timer If Abs(t02 - t01) > 0.1 Then MsgBox "Start:" & vbTab & "date = " & Format(d0, "yyyy-mm-dd") & _ vbLf & _ vbTab & "time = " & Format(t0, "H:nn:ss") & vbLf & vbLf & _ "Ready:" & vbTab & "date = " & Format(d1, "yyyy-mm-dd") & _ vbLf & _ vbTab & "time = " & Format(t1, "H:nn:ss") & vbLf & vbLf & _ "Total (by date):" & vbTab & DateDiff("s", t0, t1) & _ " second(s)" & _ vbLf & _ "Total (by time):" & vbTab & _ IIf(t02 >= t01, FormatNumber(t02 - t01, 2), _ FormatNumber(t02 + 86400 - t01, 2)) & " second(s)" & vbLf & _ vbTab & "(if totally less then 1 day)" End If End Sub
Формула 1 (календарь чемпионата-2016): 26.11.2016 15:55 — Абу-Даби: http://ru.wikipedia.org/wiki/Гран-при_Абу-Даби — (квалификация)! Эфир: http://lion-tv.com/28-match-tv.html
Последний раз редактировалось Sasha_Smirnov; 05.12.2008 в 14:09. Причина: замена "{enter}" на "{tab}" (в «закомментированном» операторе SendKeys) + попытка уменьшить шрифт в окне. |
04.12.2008, 18:50 | #2 |
Особый статус
Участник клуба
Регистрация: 24.11.2008
Сообщений: 1,535
|
Чтобы программа выполнялась, необходимо назначить ей кнопку (или комбинацию клавиш) в Word или Excel.
В среде разработки — печатать не будет (если не Word 97).
Формула 1 (календарь чемпионата-2016): 26.11.2016 15:55 — Абу-Даби: http://ru.wikipedia.org/wiki/Гран-при_Абу-Даби — (квалификация)! Эфир: http://lion-tv.com/28-match-tv.html
|
14.12.2008, 19:02 | #3 |
Особый статус
Участник клуба
Регистрация: 24.11.2008
Сообщений: 1,535
|
А вот поток вывода (полученный за 40 тыс. секунд при 1,7 МГц)
1,7 МГц, разумеется, частота цикла Do...Loop, а проц у меня 2280 МГц:-)
111111111111110423 = 40768027·2725447349 111111111111110419 = 383·290107339715693 111111111111110417 = 42719·2600976406543 111111111111110413 111111111111110411 = 302069611·367832801 111111111111110407 = 322067141·344993627 111111111111110401 111111111111110399 111111111111110393 = 55042591·2018638823 111111111111110389 = 67667417·1642017917 111111111111110387 = 60692663·1830717349 111111111111110383 = 170277407·652529969 111111111111110381 111111111111110377 = 353·314762354422409 111111111111110371 = 72683587·1528696033 111111111111110369 = 358547·309892736827 111111111111110363 = 1190827·93305837969 111111111111110359 = 19244431·5773676089 111111111111110357 = 2926937·37961565661 111111111111110353 = 3142339·35359364827 111111111111110351 = 2290051·48519055301 111111111111110347 = 33192277·3347498911 111111111111110341 = 10516429·10565479129 111111111111110339 = 5295617·20981712067 111111111111110333 = 2833·39220300427501 111111111111110329 = 53693597·2069354957 111111111111110327 = 86901829·1278581963 111111111111110323 = 3670087·30274789429 111111111111110321 = 45737·2429348473033 111111111111110317 = 47·2364066193853411 111111111111110311 = 698083·159166046317 111111111111110309 = 13393·8296207803413 111111111111110303 = 41·2710027100270983 111111111111110299 = 69496567·1598799997 111111111111110297 = 29711·3739729767127 111111111111110293 = 173707021·639646633 111111111111110291 = 30557·3636191743663 111111111111110287 = 18383·6044231687489 111111111111110281 111111111111110279 = 37739·2944198603861 111111111111110273 = 198557·559593019189 111111111111110269 = 52629959·2111176091 111111111111110267 = 12869·8634012830143 111111111111110263 = 368839·301245560017 111111111111110261 = 4794131·23176486231 111111111111110257 = 158963869·698970853 111111111111110251 = 8887·12502656814573 111111111111110249 = 5233·21232774911353 111111111111110243 = 265620229·418308167 111111111111110239 = 1414163·78570229253 111111111111110237 = 361·307787011388117 111111111111110233 = 294206287·377663959 111111111111110231 = 324252137·342668863 111111111111110227 = 13·8547008547008479 111111111111110221 = 119674367·928445363 111111111111110219 = 139·799360511590721 111111111111110213 111111111111110209 = 12156199·9140283991 111111111111110207 = 5419853·20500761019 111111111111110203 = 156127·711671338789 111111111111110201 = 9477013·11724275477 111111111111110197 = 74917477·1483113361 111111111111110191 = 215941867·514541773 111111111111110189 = 70995973·1565033993 111111111111110183 = 13171799·8435530417 111111111111110179 = 123998417·896068787 111111111111110177 = 71261·1559213470357 111111111111110173 = 5579·19915954671287 111111111111110171 = 40293719·2757529309 111111111111110167 111111111111110161 = 179551577·618825593 111111111111110159 = 233874467·475088677 111111111111110153 111111111111110149 = 4941313·22486151173 111111111111110147 = 163·681663258350369 111111111111110143 = 2951113·37650578311 111111111111110141 = 137·811030008110293 111111111111110137 = 432893·256671073709 111111111111110131 = 3451·32196786760681 111111111111110129 = 86226029·1288602901 111111111111110123 = 1426919·77867847517 111111111111110119 = 11131·9982131983749 111111111111110117 = 34695031·3202507907 111111111111110113 = 367·302755071147439 111111111111110111 = 884291·125649940021 111111111111110107 = 131·848176420695497 111111111111110101 = 31·3584229390680971 111111111111110099 = 11·10101010101010009 111111111111110093 = 989·112346927311537 (простые — выделены) Время на расчёт каждой строки — от 14 (между "близнецами") до 515 с. Примечание: N, кратные 2, 3 и пяти, программа пропускает.
Формула 1 (календарь чемпионата-2016): 26.11.2016 15:55 — Абу-Даби: http://ru.wikipedia.org/wiki/Гран-при_Абу-Даби — (квалификация)! Эфир: http://lion-tv.com/28-match-tv.html
Последний раз редактировалось Sasha_Smirnov; 14.12.2008 в 21:36. Причина: выделение «близнецов»; примечание. |
14.12.2008, 19:52 | #4 |
Особый статус
Участник клуба
Регистрация: 24.11.2008
Сообщений: 1,535
|
А точнее, за 77+40 тыс. секунд (т. е. за 32,5 ч).
111111111111111011 111111111111111007 = 58253•1907388651419 111111111111111001 = 319•348310693138279 111111111111110999 = 214695451•517528949 111111111111110993 111111111111110989 = 12026117•9239151017 111111111111110987 = 5258563•21129557849 111111111111110983 = 269560631•412193393 111111111111110981 = 113468657•979222933 111111111111110977 = 157•707714083510261 111111111111110971 = 320419397•346767743 111111111111110969 = 131203439•846861271 111111111111110963 = 166263337•668283899 111111111111110959 = 184640917•601768627 111111111111110957 = 77•1443001443001441 111111111111110953 = 58151953•1910703001 111111111111110951 111111111111110947 = 502877•220950870911 111111111111110941 111111111111110939 = 34127•3255812439157 111111111111110933 = 251864699•441153967 111111111111110929 = 4459•24918392265331 111111111111110927 = 34964353•3177839759 111111111111110923 = 50952037•2180700079 111111111111110921 = 136045529•816720049 111111111111110917 = 2239•49625328767803 111111111111110911 = 33613•3305599354747 111111111111110909 = 13546157•8202408337 111111111111110903 = 13•8547008547008531 111111111111110899 = 91037•1220504971727 111111111111110897 = 96727049•1148707753 111111111111110893 = 124843•890006737351 111111111111110891 = 448789•247579845119 111111111111110887 = 1603•69314479794829 111111111111110881 = 3431•32384468408951 111111111111110879 = 17•6535947712418287 111111111111110873 = 40796399•2723551927 111111111111110869 = 318769•348563100901 111111111111110867 = 196891711•564325997 111111111111110863 = 9808033•11328582511 111111111111110861 = 569•195274360476469 111111111111110857 = 9833•11299818072929 111111111111110851 = 13•8547008547008527 111111111111110849 = 54840293•2026085293 111111111111110843 = 19052329•5831891267 111111111111110839 = 26965999•4120415161 111111111111110837 = 52138693•2131068209 111111111111110833 = 347•320204931155939 111111111111110831 = 65461109•1697360659 111111111111110827 = 2802647•39645060941 111111111111110819 111111111111110813 = 320851•346301277263 111111111111110809 111111111111110807 = 105209669•1056092203 111111111111110803 = 77•1443001443001439 111111111111110801 111111111111110797 = 818201•135799285397 111111111111110791 = 1265993•87765975887 111111111111110789 = 1709519•64995540331 111111111111110783 = 700879•158531088977 111111111111110779 = 431•257798401649909 111111111111110777 = 535517•207483816781 <далее здесь шли составные числа, пришлось убрать> 111111111111110707 111111111111110701 = 46266481•2401546621 111111111111110699 = 19129193•5808457843 111111111111110693 = 874247•127093500019 <здесь шли составные числа> 111111111111110681 <здесь шли составные числа — сократил> 111111111111110657 <здесь шли составные числа — сократил> 111111111111110639 111111111111110633 = 92580869•1200151957 111111111111110629 <здесь шли составные числа — сократил> 111111111111110611 111111111111110609 = 43•2583979328165363 111111111111110603 = 73344413•1514922631 111111111111110599 = 154217951•720481049 111111111111110597 = 28241•3934390110517 111111111111110593 = 259•429000429000427 111111111111110591 = 13•8547008547008507 111111111111110587 = 190427•583484018081 111111111111110581 = 67•1658374792703143 111111111111110579 = 133•835421888053463 111111111111110573 = 206081779•539160287 111111111111110569 = 199•558347292015631 111111111111110567 = 7723•14387040154229 111111111111110563 = 305908453•363216871 111111111111110561 = 51007•2178350248223 111111111111110557 = 3491197•31826078881 111111111111110551 = 111111119•999999929 111111111111110549 = 177747259•625107311 111111111111110543 = 2899999•38314189457 111111111111110539 = 182036153•610379363 111111111111110537 = 276583871•401726647 111111111111110533 = 3144373•35336491921 111111111111110531 = 29977457•3706488883 111111111111110527 = 254286931•436951717 111111111111110521 = 19948421•5569920101 111111111111110519 = 248298233•447490543 111111111111110513 = 13•8547008547008501 111111111111110509 = 2852521•38951899429 111111111111110507 = 1817•61150859169571 111111111111110503 = 51635027•2151855389 111111111111110501 = 1127993•98503369357 111111111111110497 = 284522281•390518137 111111111111110491 111111111111110489 <здесь шли составные числа — сократил> 111111111111110431 <здесь отключал питание, затем продолжил — см. предыд. пост>
Формула 1 (календарь чемпионата-2016): 26.11.2016 15:55 — Абу-Даби: http://ru.wikipedia.org/wiki/Гран-при_Абу-Даби — (квалификация)! Эфир: http://lion-tv.com/28-match-tv.html
Последний раз редактировалось Sasha_Smirnov; 14.12.2008 в 21:29. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Простые числа | 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 |