Practică & Proiecte
Exemple practice
Câteva probleme clasice rezolvate complet, care reunesc conceptele din curs.
1. Ciurul lui Eratostene
const int N = 1000000;
bool compus[N+1] = {};
vector<int> prime;
for (int i = 2; i <= N; i++) {
if (!compus[i]) {
prime.push_back(i);
for (long long j = (long long)i*i; j <= N; j += i)
compus[j] = true;
}
}
cout << "Prime pana la " << N << ": " << prime.size() << endl;2. GCD (cmmdc) și LCM (cmmmc)
int gcd(int a, int b) { return b == 0 ? a : gcd(b, a%b); }
int lcm(int a, int b) { return a / gcd(a, b) * b; }
cout << gcd(12, 18) << endl; // 6
cout << lcm(4, 6) << endl; // 123. Sortare prin selecție
void selSort(int v[], int n) {
for (int i = 0; i < n-1; i++) {
int minIdx = i;
for (int j = i+1; j < n; j++)
if (v[j] < v[minIdx]) minIdx = j;
swap(v[i], v[minIdx]);
}
}