char find_min_err( int gain ){
char ma;
int a,b;
int err=32767;
for(a=1;a<16;a++){
for(b=0;b<16;b++){
if((a*b)>gain ) continue;
else{
if((gain-(a*b))<=err){
err = (gain-(a*b));
ma=(char)((a>=b)?(a):(b));
}}}}
return ma;
}
void NOD( unsigned int gain ){
if(gain < 16)
printf("%d \t 0x%02x\n", gain, gain);
else
printf("%d \t 0x%02x\n", gain, find_min_err(gain));
}
void main(void){
unsigned int x;
for( x=0; x<256; x++){
NOD(x);
if((x&0x0f)==0x0f)
printf("\n"); // не убирать
}
}