1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
int degre_polynome(suite_binaire s_b)
{
int i,degre=s_b.taille;
for(i=0;i<s_b.taille;i++)
{
if(s_b.bit[i]==1)
{
degre=s_b.taille-i;
i=s_b.taille;
}
else
degre-=1;
}
return degre;
}
suite_binaire div_polynomiale(suite_binaire m_b,suite_binaire g)
{
suite_binaire reste=m_b;
int i,curseur1=0,curseur2=g.taille;
int nb_decalage=0;
int a=0,b=0;
while(degre_polynome(reste)>degre_polynome(g))
{
for(i=curseur1;i<curseur2;i++)
{
if(m_b.bit[i]==1 && g.bit[i-nb_decalage]==1)
reste.bit[i]=0;
else if(m_b.bit[i]==0 && g.bit[i-nb_decalage]==0)
reste.bit[i]=0;
else
reste.bit[i]=1;
}
a=curseur1,b=curseur2;
for(i=a;i<b;i++)
{
if(reste.bit[i]==0)
{
nb_decalage+=1;
curseur1+=1;
curseur2+=1;
}
}
}
return reste;
} |
Partager