Szczegółowe omówienie zadania A. Noldbach problem.
Zadanie ćwiczy zrozumienie Sita Eratostenesa.
Szczegółowe omówienie rozwiązania zdania oraz Sita Eratostenesa:
https://youtu.be/tuXRPTYIS8E? t=1644
https://youtu.be/tuXRPTYIS8E?
Link do zadania:
https://codeforces.com/ problemset/problem/17/A
https://codeforces.com/
Poniżej kod wzorcowy do zadania użyty w powyższym omówieniu:
#include <bits/stdc++.h> using namespace std; const int MAX_PRIME = 1e3 + 7; // 1000 + 7 = 1007 int sito [MAX_PRIME]; //na poczatku wszystkie wartosci sa wyzerowane na przyklad: sito[3] = 0, sito[6] = 0 void Sito() { int i,j, max_analizy; max_analizy = sqrt(MAX_PRIME) + 1; sito[0] = 1; sito[1] = 1; for (i=2; i<max_analizy; ++i) { if (sito[i] == 1) { continue; } for (j=i*i; j<MAX_PRIME; j=j+i) { sito[j] = 1; } } } int main () { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int max_zakres; int k, wynik; int suma_3_liczb; int poprzednia_pierwsza, i; Sito(); cin >> max_zakres; cin >> k; wynik = 0; poprzednia_pierwsza = 2; for (i=3; i<=max_zakres; ++i) { if ( sito[i] == 1 ) { continue; } suma_3_liczb = poprzednia_pierwsza + i + 1; if ( sito[suma_3_liczb] == 1 ) { poprzednia_pierwsza = i; continue; } if ( suma_3_liczb > max_zakres) { break; } ++wynik; poprzednia_pierwsza = i; } if (wynik >= k) { cout << "YES\n"; } else { cout << "NO\n"; } return 0; }