От: | vdimas | ||
Дата: | 04.04.17 13:56 | ||
Оценка: |
Если оно при этом рациональное, то знаменатель будет степенью двойки после сокращения дроби.
bool isFusible(uint numerator, uint denominator) {
assert(denominator);
if(!numerator) return true;
uint a = numerator, b = denominator;
while(a!=b) if(a>b) a-=b; else b-=a;
denominator/=a;
return !(denominator&(denominator-1));
}