После прочтения темы про различные реализации swap-а решил создать ещё одну тему, где можно было бы поделиться кодом.
Было бы познавательно увидеть чужой код (особенно, если там используется интересный приём) часто используемых функций.
Мои коды:
int gcd(int a,int b)
{
if (a*b==0) (a==0||b==0) return a+b;
return gcd(b,a%b);
}
bool IsPrime(int x)
{
for (int i=2;i*i<=x;i++) if (x%i==0) return false;
return true;
}
Я вообще всегда пишу так
int gcd(int a, int b){ if(a == 0) return b; else return gcd(b % a, a); }
Предположим, что b больше a. Тогда все корректно.
Если a больше b, то b % a == b и переменные просто свапнутся.
int gcd (int a, int b) {
return b ? gcd(b, a % b) : a;
}
return true;return x!=1=)
А мы редко это в функцию выносим.
Просто везде пишем
if(mask & (1LL << i)){...}
Я тут как-то смотрел видеозапись лекции Степанова (тот что автор STL), так он там упоминал этот случай.