Sunteți pe pagina 1din 39

Algoritmi

elementari
clasa a IX-a Real

Prof. Ghiorcilă Carmen


I
Prelucrarea
numerelor
Calculul unor expresii simple
1. Se citeşte un număr întreg n. Să se realizeze un program care să
afiseze suma primelor n numere intregi.
PSEUDOCOD C++

intreg n, i, s #include <iostream>


citeşte n using namespace std;
s←0 int main()
pentru i ← 1, n execută { int n, i, s=0;
|s←s+i cin>>n;
|▄ for(i=1; i<=n; i++)
scrie “Suma este “, s s=s+i;
cout<<"Suma este "<<s;
return 0;
}
Calculul unor expresii simple
2. Se citeşte un număr întreg n. Să se realizeze un algoritm care să afișeze n!
Factorial de n (notat n!) este produsul numerelor de la 1 la n.
PSEUDOCOD C++

intreg n, i, s #include <iostream>


citeşte n using namespace std;
s←0 int main()
pentru i ← 1, n execută { int n, i, p=1;
|s←s+i cin>>n;
|▄ for(i=1; i<=n; i++)
scrie “Suma este “, s p=p*i;
cout<<"Produsul este "<<p;
return 0;
}
Calculul unor expresii simple
3. Realizati un program care sa calculeze o expresie de forma: 1-2+3-4+5-6+7-
8......+ -n, unde n este un intreg dat de la tastatura.
C++

#include <iostream>
using namespace std;
int main()
{
int n, s=0;
cout<<"Dati n: "; cin>>n;
int semn=1;
for(int i=1; i<=n; i++)
{
s+=semn*i; // sau s=-(s+i);
semn=-semn;
}
cout<<"Suma este: "<<s<<endl;
}
Calculul unor expresii simple
4. Realizați un program care să calculeze suma primelor n numere întregi
pare.
C++

#include <iostream>
using namespace std;
int main()
{
int n, i, s=0;
cin>>n;
for(i=1; i<=n; i++)
{if(i%2==0) s=s+i;}
cout<<"Suma este "<<s;
return 0;
}
FISA DE LUCRU 1 - laborator
-
Prelucrarea cifrelor unui număr
1. Se citeşte un număr întreg n, cu cel mult 9 cifre. Se cere să se afişeze suma
cifrelor numărului n.
PSEUDOCOD C++
întreg n, c, S #include <iostream>
using namespace std;
citeşte n int main()
S←0 {
┌cât timp n>0 execută int n, c, S=0;
| c ← n % 10 //extrag cifra cout<<"n= "; cin>>n;
| S ← S + c //adun la sumă while(n>0)
{
| n ← n / 10 //elimin cifra c=n%10;
|▄ S=S+c;
scrie S n=n/10;
}
cout<<S;
return 0;
}
Prelucrarea cifrelor unui număr
2. Se citeşte un număr întreg n. Se cere să se afişeze suma cifrelor pare a
numărului n.
Prelucrarea cifrelor unui număr
3. Se citeşte un număr întreg a. Să se realizeze un program care să afiseze
numărul invers (citit de la dreapta la stânga).
PSEUDOCOD C++
#include <iostream>
întreg a, inv using namespace std;
citeşte a int main()
{
inv ← 0 int a, inv;
cât timp a ≠ 0 execută cin>>a;
| inv ← inv * 10 + a % 10 inv=0;
| a ← a / 10 while(a!=0)
|▄ {
scrie inv inv=inv*10+a%10;
a=a/10;
}
cout<<inv;
return 0;
Prelucrarea cifrelor unui număr
4. Se citeşte un număr întreg a. Să se realizeze un program care să verifice dacă
numărul citit este sau nu palindrom.
FISA DE LUCRU
1. Se citeşte un număr întreg n. Se cere să se afişeze suma cifrelor
impare a numărului n.
2. Se citeşte un număr întreg n. Se cere să se afişeze suma cifrelor
pare >= 4, a numărului n.
Divizibilitate - algoritmi
Orice număr natural cu excepția lui 1 are cel puțin doi divizori:
pe 1 și pe el însuși.

Mulțimea divizorilor lui 12

D12 = {1, 2, 3, 4, 6, 12}

1 și 12 2, 3, 4, 6
sunt divizori improprii sunt divizori proprii
Probleme de divizibilitate
1. Se citesc două numere întregi a şi b. Să se realizeze un program care să
verifice dacă cele două numere sunt divizibile (a divizibil cu b sau b divizibil
cu a) și să se afișeze un mesaj corespunzător.
Probleme de divizibilitate
2. Se citeşte un număr întreg n. Să se realizeze un program care să afișeze
toți divizorii numărului n.

PSEUDOCOD

întreg n, i
citeşte n
pentru i ← 1, n execută
| dacă (n % i = 0) atunci
| | scrie i
| |▄
|▄
Probleme de divizibilitate
3. Se citeşte un număr întreg n. Să se realizeze un program care să afiseze divizorii
proprii ai numărului n, iar dacă numărul nu are divizori proprii să se afișeze
mesajul: “nu există divizori proprii”.
Scrieți un program care să citească un
număr natural n, și să afișeze în ordine
descrescătoare, separați prin câte un spațiu,
divizorii proprii ai numărului n.
Vă mai amintiți ce am făcut
data trecută?
Ce afișează următorul
program pentru n=6?
Ce afișează următorul
program pentru n=13?
VERIFICAREA TEMEI
Scrieți un program care să citească un număr natural n,
și să afișeze în ordine descrescătoare, separați prin câte un
spațiu, divizorii proprii ai numărului n.
La matematică
cum calculăm cel mai mare
divizor comun
a = 12 și b = 18

a = 22 x 3
b = 32 x 2
............................
cmmdc(12,18)=6
Algoritmul lui Euclid

Euclid a fost un matematician


grec, care a trăit și a predat în
Egipt.
Algoritmul lui Euclid fiind unul
dintre cei mai vechi algoritmi
numerici încă utilizați.
Algoritmul lui Euclid este o
metodă eficientă de calcul al celui
mai mare divizor comun.

(323 - 283 î.Hr.)


Descrierea algoritmului:

Algoritmul lui Euclid foloseşte o structură repetitivă cu test


iniţial. Mai întâi aflăm restul împărţirii lui a la b şi cât timp acest
rest este diferit de 0, vom înlocui pe a cu b şi pe b cu restul
obţinut, după care recalculăm restul împărţirii noului a la noul b.

Euclid a demonstrat că oricare ar fi numerele a şi b iniţiale,


repetând operaţiile descrise mai sus, găsim restul=0. În acel
moment putem afirma că cmmdc(a,b) este ultimul rest nenul.
Deoarece variabila b ia mereu valoarea restului, afişăm pe b ca
fiind cel mai mare divizor comun.
Cel mai mic
multiplu comun cmmmc=(a*b)/cmmdc
se calculează
astfel:
Se citesc două numere întregi a şi b. Să se realizeze un
program care să afişeze cel mai mare divizor comun a celor
două numere.
PSEUDOCOD

intreg a, b, r
citeşte a, b
r←a%b
cât timp r ≠ 0 execută
| a←b
| b←r
| r←a%b
|▄
scrie „cmmdc este ”, b
Fișă de lucru
1. Se citesc două numere întregi a şi b. Să se realizeze un
program care să afişeze cel mai mare divizor comun a celor
două numere.
2. Se citesc două numere întregi a şi b. Să se realizeze un
program care să afişeze cel mai mic multiplu comun a celor
două numere.
3. Determinați cel mai mare divizor comun pentru n numere
citite pe rând de la tastatură.
4. Determinați cel mai mare divizor comun pentru două
numere a și b citite de la tastatură folosind metoda
scăderea repetată.
Numere prime

Numerele care au fix doi divizori (pe 1 și numărul însuși) se numesc


numere prime.

Numere prime: 2, 3, 5, 7, 11, 13, 17, 19, 23, .........


Se citeşte un număr întreg n. Să se realizeze un program care să
verifice dacă numărul n este prim și să se afișeze un mesaj
corespunzator
Se citeşte un număr întreg n. Să se realizeze un program care să
afişeze factorii primi şi puterile lor pentru numărul citit.

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