Математические алгоритмы

advertisement
Математические алгоритмы
План лекции:
1) НОД
2) НОК
3) Проверка числа на простоту
4) Решето Эратосфена
5) Факторизация числа
6) Бинарное возведение в степень
7) Дерево Штерна-Броко
8) Математическое ожидание
Наибольший общий делитель (НОД)
Greatest common divisor (GCD)

НОД(a, b) – наибольшее целое число, на которое делится и a, и b.
GCD(a, b)  max(k )
kN , k |a & k |b
Алгоритм Евклида нахождения НОД
int gcd(int a, int b)
{
if(b==0) return a;
else return gcd(b, a%b);
}
Реализация алгоритма Евклида
без рекурсии
int gcd(int a, int b)
{
while(a!=0 && b!=0)
{
if(a>b) a%=b;
else b%=a;
}
return a+b;
}
Наименьшее общее кратное (НОК)
Least common multiple (LCM)
a *b
LCM (a, b) 
GCD(a, b)
Проверка числа на простоту за
O(sqrtN)
bool isPrime(int x)
{
if(x<2) return false;
for(int i=2; i<=sqrt(x); i++)
if(x%i==0)
return false;
return true;
}
Решето Эратосфена
Реализация решета Эратосфена за
О(NloglogN)
vector<bool> primes(n, 1);
primes[0]=primes[1]=0;
for(int i=2; i<sqrt(n); ++i)
if(primes[i])
for(int j=i*i; j<n; j+=i)
primes[j]=0;
Факторизация чисел

Факторизация числа – это представление числа
в виде произведение простых множителей.
x  p p ... p
k1
1
k2
2
kn
n
Реализация факторизации числа за
O(sqrtN)
vector<int> factors;
for(int i=2; i<=sqrt(x); i++)
while(x%i==0)
{
factors.push_back(i);
x = x/i;
}
if(x>1)
factors.push_back(x);
Бинарное возведение в степень
a  (a
n/2 2
a  (a
) *a
n
n
)
n/2 2
Реализация бинарного возведения в
степень за O(logN)
int power(int a, int n)
{
if(n==1) return a;
int t = power(a, n/2);
if(n%2==0)
return t*t;
else return t*t*a;
}
Дерево Штерна-Броко
Математическое ожидание

Среднее значение случайной величины в теории вероятностей

Пусть xi – одно из возможных значений случайной величины, а pi –
вероятность этой величины. Тогда формула мат. Ожидания примет вид:
M   xi pi

Пример:
xi
1
3
4
7
9
pi
0.1
0.2
0.1
0.3
0.3
М=1*0.1+3*0.2+4*0.1+7*0.3+9*0.3=5.9
Спасибо за внимание!
Домашнее задание
ipc.susu.ac.ru ->
Рабочее место участника ->
Тренировка 4 (проводит Peeka)
Download