Prośba o wyjaśnienie kodu

0

Witam, proszę o wyjaśnienie krok po kroku co robi ten kod, bo ciężko mi to zrozumieć:

#include <stdio.h>
#include <stdlib.h>

int main () {

   int i, j;

   for(i = 2; i<100; i++) {

      for(j = 2; j <= (i/j); j++)
         if(!(i%j)) break;
         if(j > (i/j)) printf("%d is prime\n", i);
   }

   return 0;
}

Zadaniem programu jest wypisanie liczb pierwszych mniejszych od 100.

1

Łatwiej bedzie jak ten kawałek kodu przepiszesz, odpalisz i zapytasz. Albo napisz której dokladnie linijki nie rozumiesz, z mojego punktu widzenia program jest bardzo prosty i nie ma nawet zaciemnienia kodu.

0

Jestem początkujący, dlatego nawet pętla w pętli to dla mnie jeszcze czarna magia :S ale dobrze, proszę o wyjaśnienie tego

if(!(i%j))
1

Jestem początkujący, dlatego nawet pętla w pętli to dla mnie jeszcze czarna magia :S ale dobrze, proszę o wyjaśnienie tego
if(!(i%j))

Wygoogluj "kurs c++".

1
i%j

to reszta z dzielenia i przez j.

!(i%j)

oznacz, że ta reszta nie jest zerem => i dzieli się przez j => liczba i nie jest pierwsza.

1

Zauważ, że ten warunek znajduje się wewnątrz drugiej pętli for i to jest jedyne co się tam znajduje - może lepiej zapisać to w ten sposób - będzie czytelniejsze :

for(j = 2; j <= (i/j); j++)
{
         if(!(i%j)) break;   // Odpowiada to zapisowi if((i%j)==0) break; - natychmiastowa eliminacja danej liczby jeżeli dzieli się przez 2 i nie jest dwójką 
}

Rozpisz sobie wszystko po kolei na kartce, zobacz jak zmienne zachowują się dla kolejnych liczb i co spełnienie / niespełnienie danego warunku powoduje. Ewentualnie skorzystaj z debuggera

1 użytkowników online, w tym zalogowanych: 0, gości: 1