// PR Bab 09, tantangan -- pembahasan. // // Tiga perbaikannya: // 1. Cabang dari < d * d <= x? > menuju [ cetak x jika prima ] adalah // cabang "tidak" dan harus diberi label. // 2. Setelah memeriksa satu pembagi, langkah [ d = d + 1 ] hilang; // tanpa itu perulangan dalam tidak pernah berhenti. // 3. Panah balik dari [ cetak x jika prima ] harus menuju // [ x = x + 1 ] lalu ke < x <= n? >, bukan kembali ke // [ d = 2, prima = benar ]. #include using namespace std; int main() { int n; cin >> n; for (int x = 2; x <= n; x++) { bool prima = true; for (int d = 2; d * d <= x; d++) { if (x % d == 0) prima = false; } if (prima) cout << x << " "; } cout << "\n"; return 0; }