45 FreeBASIC - Вариации скатерти Улама - треугольник

Чуть позже с простыми числами подобно скатерти Улама решил поиграться Лауренце Монро Клаубер. Он расположил числа в виде треугольника. В вершине одна точка(число) далее в каждой строке по два числа добавляются. Я нашёл два варианта треугольника - прямоугольный и равнобедренный.

Построим прямоугольный

 1
 2, 3, 4
 5, 6, 7, 8, 9,
10,11,12,13,14,15,16
17,18,19,20,21,22,23,24,25,
...

Переменная p будет принимать все числа от 1 и далее
Ставить точки будем по x, y координатах. Y у нас независимо будет увеличиваться на 1, а вот x пусть бежит от 1 к k при каждом новом y.

Функцию определения простоты числа function prost() возьмём с прошлого урока 44

screenres 1024,768
dim as integer x,y,i,k,p

function prost(byval r as integer) as integer
dim as integer i
    
    for i=2 to sqr(r)
        if (r mod i) = 0 then return -2
    next i
    return 0
    
end function

k=1: p=1

for y=1 to 512
    for i=1 to k
        if prost(p)=0 then pset (i,y)
        p+=1
    next i
    
    k+=2
    
next y

sleep

Здесь так же видно и пустоты, и сгустки и линии

Жаль что часть треугольника теряется. Изменим
for y=1 to 512 на for y=1 to 768, а k+=2 на k+=1

Получим такую картинку

А если треугольник сделать равнобедренным

Здесь необходимо немного иначе считать x координату

не от 1 до k, а от -k/2 к k/2
и сместиться к середине экрана

Я не менял программу, а добавил этот код после sleep

sleep
cls

p=2
k=1

for y=1 to 512
    for i=-int(k/2) to k-int(k/2)
        if prost(p)=0 then pset (512+i,y)
        p+=1
    next i
    
    k+=2
    
next y

sleep

@sergiy

программированиеfreebasicsgfbsgpgbotbod
646
409.975 GOLOS
0
В избранное
Сергей
Кибернетик... а кто это? deals.weku.io/@sergiy, serey.io/@sergiy, whaleshares.io/@sergiy, sola.ai/nsergiy
646
0
Комментарии (4)
Сортировать по:
Сначала старые
Зарегистрируйтесь, чтобы проголосовать за пост или написать комментарий
Авторы получают вознаграждение, когда пользователи голосуют за их посты. Голосующие читатели также получают вознаграждение за свои голоса.