Sunteți pe pagina 1din 4

#include <stdio.

h>

int main() {
int op;

while (1) {
printf("\n\nOptiuni:\n");
printf("1. Afisarea maximului dintre n numere\n");
printf("2. Afisarea numerelor prime mai mici sau egale cu n\n");
printf("3. Descompunerea unui numar in factori primi\n");
printf("4. Cel mai mare divizor comun si cel mai mic multiplu comun a doua numere\n");
printf("5. Suma si cifra de control a unui numar\n");
printf("6. Reprezentarea unui numar in baza b\n");
printf("7. Conversia unui numar din baza b in baza 10\n");
printf("8. Suma 1 + 1*2 + 1*2*3 + ... + 1*2*...*n\n");
printf("9. Numere consecutive terminate cu aceeasi cifra\n");
printf("10. Primele n numere din sirul lui Fibonacci\n");
printf("11. Parasirea programului\n");

printf("Introduceti optiunea dorita: ");


scanf("%d", &op);

switch (op) {
case 1:
citireMaxNumere();
break;
case 2:
afisareNumerePrime();
break;
case 3:
descompunereFactoriPrimi();
break;
case 4:
calculareCMMDCsiCMMC();
break;
case 5:
calculareSumaCifraControl();
break;
case 6:
convertireBazaB();
break;
case 7:
convertireDinBazaB();
break;
case 8:
calculareSumaProdusFactori();
break;
case 9:
numereConsecutiveTerminareAceeasiCifra();
break;
case 10:
afisarePrimeleNumereFibonacci();
break;
case 11:
printf("La revedere!\n");
return 0;
default:
printf("Optiune invalida!\n");
}
}

return 0;
}
void citireMaxNumere() {
int n, i, max;
printf("Introduceti numarul de numere: ");
scanf("%d", &n);

printf("Introduceti numerele: ");


scanf("%d", &max);
for (i = 1; i < n; i++) {
int numar;
scanf("%d", &numar);
if (numar > max) {
max = numar;
}
}

printf("Numarul maxim este: %d\n", max);


}
void afisareNumerePrime() {
int n, i, j;

printf("Introduceti numarul: ");


scanf("%d", &n);

printf("Numerele prime mai mici sau egale cu %d sunt: ", n);


for (i = 2; i <= n; i++) {
int estePrim = 1;
for (j = 2; j <= i / 2; j++) {
if (i % j == 0) {
estePrim = 0;
break;
}
}
if (estePrim) {
printf("%d ", i);
}
}

printf("\n");
}
void descompunereFactoriPrimi() {
int n, i;

printf("Introduceti numarul: ");


scanf("%d", &n);

printf("Descompunerea in factori primi a numarului %d este: ", n);


for (i = 2; i <= n; i++) {
while (n % i == 0) {
printf("%d ", i);
n /= i;
}
}

printf("\n");
}
void calculareCMMDCsiCMMC() {
int a, b, i, cmmdc, cmmsc;

printf("Introduceti primul numar: ");


scanf("%d", &a);
printf("Introduceti al doilea numar: ");
scanf("%d", &b);

cmmdc = 1;
for (i = 2; i <= a && i <= b; i++) {
while (a % i == 0 && b % i == 0) {
cmmdc *= i;
a /= i;
b /= i;
}
}

cmmsc = a * b * cmmdc;

printf("Cel mai mare divizor comun al numerelor %d si %d este: %d\n", a, b, cmmdc);


printf("Cel mai mic multiplu comun al numerelor %d si %d este: %d\n", a, b, cmmsc);
}
void calculareSumaCifraControl() {
int n, suma, cifraControl;

printf("Introduceti numarul: ");


scanf("%d", &n);

suma = 0;
while (n > 0) {
suma += n % 10;
n /= 10;
}

cifraControl = (10 - (suma % 10)) % 10;

printf("Suma cifrelor numarului %d este: %d\n", n, suma);


printf("Cifra de control a numarului %d este: %d\n", n, cifraControl);
}
void convertireBazaB() {
int n, b, i, putere = 1;

printf("Introduceti numarul: ");


scanf("%d", &n);
printf("Introduceti baza (b < 10): ");
scanf("%d", &b);

if (b < 10) {
printf("Reprezentarea numarului %d in baza %d este: ", n, b);
while (n > 0) {
printf("%d", n % b);
n /= b;
putere *= 10;
}
for (i = putere; i > 1; i /= 10) {
printf("0");
}
printf("\n");
} else {
printf("Baza introdusa trebuie sa fie mai mica decat 10!\n");
}
}
void convertireDinBazaB() {
int n, b, i, valoare = 0, putere = 1;

printf("Introduceti numarul: ");


scanf("%d", &n);
printf("Introduceti baza a numarului (b != 10): ");
scanf("%d", &b);

if (b != 10) {
while (n > 0) {
valoare += (n % 10) * putere;
n /= 10;
putere *= b;
}
printf("Valoarea numarului in baza 10 este: %d\n", valoare);
} else {
printf("Baza introdusa nu trebuie sa fie 10!\n");
}
}
void calculareSumaProdusFactori() {
int n, i, j, suma = 0, produs;

printf("Introduceti numarul: ");


scanf("%d", &n);

for (i = 1; i <= n; i++) {


produs = 1;
for (j = 1; j <= i; j++) {
produs *= j;
}
suma += produs;
}

printf("Suma S = 1 + 1*2 + 1*2*3 + ... + 1*2*...*%d este: %d\n", n, suma);


}
void numereConsecutiveTerminareAceeasiCifra() {
int numarAnterior, numarCurent, perechiConsecutive = 0;

printf("Introduceti numere (0 pentru terminare): ");


scanf("%d", &numarAnterior);

while (numarAnterior != 0) {
scanf("%d", &numarCurent);
if (numarAnterior % 10 == numarCurent % 10) {
perechiConsecutive++;
}
numarAnterior = numarCurent;
}

printf("Numarul de perechi consecutive terminate cu aceeasi cifra este: %d\n", perechiConsecutive);


}
void afisarePrimeleNumereFibonacci() {
int n, i, f1 = 0, f2 = 1, f;

printf("Introduceti numarul de termeni: ");


scanf("%d", &n);

printf("Primele %d numere din sirul lui Fibonacci sunt: ", n);


for (i = 1; i <= n; i++) {
printf("%d ", f1);
f = f1 + f2;
f1 = f2;
f2 = f;
}

printf("\n");
}

S-ar putea să vă placă și