unsigned i,j,pass;
    CBigInt S,A,I,K;
    K.Mov(*this);
K.m_ulValue[0]--;
    for(i=0;i<5;i++)
    {
        pass=0;
        A.Mov(rand()*rand());
S.Mov(K);
/**********************************下面不懂了********************************/
        while((S.m_ulValue[0]&1)==0)
{
            for(j=0;j<S.m_nLength;j++)
{
    S.m_ulValue[j]=S.m_ulValue[j]>>1;
    if(S.m_ulValue[j+1]&1)S.m_ulValue[j]=S.m_ulValue[j]|0x80000000;
}
/**********************************以上不懂了********************************/
    if(S.m_ulValue[S.m_nLength-1]==0)S.m_nLength--;
I.Mov(A.RsaTrans(S,*this));
if(I.Cmp(K)==0){pass=1;break;}
}
if((I.m_nLength==1)&&(I.m_ulValue[0]==1))pass=1;
if(pass==0)return 0;
}
    return 1;
}