Prime Triangle Mock Exam

preparation

#1

Привет,

Имам затруднения с техническото изпълнение на задачата Prime Triangle. Ето как изглежда моят примерен алгоритъм:

  1. Read int n from the console;
  2. Create array of integers called list with length n;
  3. Create array of integers called binary length n, filled with 1;
  4. Check each element from the list if its prime:
    • if no change the corresponding binary value to 0;
  5. Cut off all 0 from the end of the binary array;
  6. Print the prime triangle with 2 nested loops;

И моят код, който при проверката на прости числа при n>=9 не приписва правилните стойности в binary. Стигнах до извода, че грешката ми най-вероятно е индексирането на binary, но не мога да измисля как да го променя.

https://pastebin.com/GD7zyMPX

Благодаря предварително за съдействието!

Моника


#2

Здравей,

Хванала си идеята , но алгоритъмчето за прости числа не ти е много съгласно да работи правилно,
виж това:

  1. четеш входа,
  2. правиш лист (можеш да си адднеш 1 ръчно и да въртиш от 1) , вдигни scope-a на променливите, като ги изнесеш горе при листа ( j , k )
    https://pastebin.com/u7WZQp3F
  3. след това притиш схемичката

P.S.
Advanced tip: Пробвай да изнесеш принтирането с 2-та фор цикъла във метод(функция или както там се нарича на този език :slight_smile: ) и да го преизползваш в бъдеще
Поздрави, Успех!


#3

Много благодаря за насоките :wink:
Със сигурност не бих се сетила сама за този начин. В кодът, който си ми пратил с проверката добавих и 1 като просто число понеже така е в условието. Може би не по най-оптималния начин стигнах до правилна бинарна редица, която да отразява простите и непростите числа. Сега обаче се появи трудност с принтирането на триъгълника. Не използвам функции понеже не съм ги учила още. В условието всеки ред завършва с просто число, а при мен излизат и 0лите. Ще се радвам на съвет и тук.
Благодаря предварително!

https://pastebin.com/D7P0fbxe

Моника


#4

Здравей Моника,
Приложено ти изпращам идея, как може да принтираш list-a с prime numbers.
List-a който принтирам в примера съдържа Prime числа, така че ще трябва да закоментираш:

    for (int q = 0; q <list.size() ; q++) {
        if(list.get(q)!=0){
            list.set(q, 1);
        }

https://pastebin.com/k6j32jms

Поздрави,
Мишо