Chưa hiểu cách thực hiện chương trình của vòng lặp for lồng nhau

Chào mọi người, mình đang học code C/C++, đến bài này mình chưa hiểu cách thực hiện chương trình của vòng lặp for lồng nhau này lắm. Bạn nào hiểu có thể chỉ cho mình không nhỉ. Cám ơn nhé.

// Lồng vòng lặp trong C++

#include <iostream>
using namespace std;
 
int main () {
   int i, j;
   
   for(i = 2; i<100; i++) {
      for(j = 2; j <= (i/j); j++)
         if(!(i%j)) break; // if factor found, not prime
         if(j > (i/j)) cout << i << " is prime\n";
   }
   
   return 0;
}

Chỗ này indent hơi lỗi tí nên kiến bạn khó đọc.

Thế này dễ nhìn hơn một tí:

   for(i = 2; i<100; i++) {
      for(j = 2; j <= (i/j); j++) {
         if(!(i%j)) break; // if factor found, not prime
      }
      if(j > (i/j)) cout << i << " is prime\n";
   }

Như vậy có thể hiểu đoạn lệnh trên là:

  • Với mỗi i từ 2 đến 99
    • Kiểm tra với mỗi j từ 2 đến i / j
    • Nếu i chia hết cho j :point_right: thoát for của j.
  • Nếu j > i / j :point_right: in ra i hiện tại.
3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?