Prime Triangle Mock Exam

Привет,

Имам затруднения с техническото изпълнение на задачата 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

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

Моника

Здравей,

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

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

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

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

https://pastebin.com/D7P0fbxe

Моника

Здравей Моника,
Приложено ти изпращам идея, как може да принтираш 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

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

Преди малко попаднах на тази задачка и с изумление установих че 1 се приема за просто число. За мен това е грешно. Мисля е задачата трябва да се коригира.

1 Like

Здравей, @svetlio, благодаря за навременната забележка. Вкарахме пояснение в условието, което, въпреки че нарушава фундаментални математически закони, адресира проблема с числото 1.

Поздрави,
Екипът на ТА

1 Like

И аз предпочетох public метод, но за проверка дали числото е просто.
Печатането ми е в main метода.