С тех пор как написал о дружественных числах всё мне интересно - а на что же способен FreeBasic в их поиске, в плане быстродействия?
dim as integer sda, sdb, a, b, i
for a=2 to 10000
sda=0
for i=1 to a-1
if a/i=Int(a/i) then sda+=i
next i
sdb=0
for i=1 to sda-1
if sda/i=Int(sda/i) then sdb+=i
next i
if sdb=a then print sda,sdb
next a
sleep
Здесь попадаются и совершенные числа и дружественные встречаются по два раза
Можно их выделить цветом
if sda=sdb then color 11
if sda<sdb then color 7
if sda>sdb then color 14
if sdb=a then print sda,sdb
Считает долговато, правда и компьютер этот далеко не первой свежести - Pentium G2020
Добавлю время нахождения каждой пары и программы вцелом
Gеред первым циклом for добавлю такие строки
dim as double sec,sec2,st
st=timer
sec=timer
а вывод в конце цикла этим-
if sdb=a then print sda,sdb, (timer-sec):sec=timer
скриншот сделан когда ещё общее время не подсчитывалось
что-то долго считает, а если операцию деления, да и к тому же вычисляемую дважды заменить остатком от деления?
if a/i=Int(a/i) then sda+=i
if a mod i=0 then sda+=i
стало раз в пять быстрее!!!
Можно ещё поиск делителей уменьшить в два раза
for i=1 to a-1
for i=1 to a/2
ну а замена Integer на число подлиннее ULongInt не сильно меняет картину.
.
Как пойду пить чай - поставлю поиск до миллиона, и на машине побыстрее проверю время поиска..
✅
✅
Ваш пост поддержали следующие Инвесторы Сообщества "Добрый кит":
shafarevich, ksantoprotein, midnight, nefer, ramzansamatov, sergiy, gans91, maxiandr, candy777, borodaus, nerengot, upper, evgeniybb, doublingseason, necrogenesis, m0rte
Поэтому я тоже проголосовал за него!
Так как Вы голосуете за мои посты, я проголосовал на 80% сильнее!
dobryj.kit теперь стал Делегатом! Ваш голос важен для всего сообщества!!!
Поддержите нас:
Здравствуйте, @sergiy. Вы получили 100% апвот от UPRomo за сожженные GBG. Продвигали сей пост в очереди: @sergiy.
Сервис прибавил к вашему посту примерно 124.803 GBG.
Инструкция по сжиганию для продвижения или задвигания постов.
Соглашение об использовании UPRomo.
Делегируйте СГ сервису UPRomo и способствуйте уменьшению количества GBG, что поможет выйти из кризиса, возобновить GBG и восстановить его цену, равную 1 МГ золота.
Рекомендую!