如何判断一个整数是不是一个大整数的因子

来源:互联网 发布:hypervisor软件 编辑:程序博客网 时间:2024/05/01 05:25
         这是一个同模取余的问题,我们可以先用一个数组把那个大整数装起
来,然后对数组中的每一个元素取余并乘以它的进制把它加到它的下一位元素里
面,最后判断数组中的最后一个元素是否能被那个除数整除。
         如果大整数的位数很大,我们可以采用千进制,或万进制来对它取余
,这样可以提高几倍的效率。但是在倒数第二位元素取余之后,到底是乘以10,
100,还是1000是由最后一个元素的位数来决定的,假如用千进制来取余,那么
变换大整数后,数组中的元素除了最后一个元素之外,其余的数都三位数,最后
一个元素可能是一位,二位或三位。
下面是判断整数k是否是变换后的大整数lc[]的因子的代码:
  1. bool isfactor(int k,int length)   //length表示数组的长度,用10000来取余
  2. {                                 //的,lc[]是把大整数化为10000进制后
  3.        int i;                     //的数组
  4.        for(i=0;i<length-2;++i)      
  5.        {
  6.             //if(k == 23)
  7.            // cout<<lc[i]<<" "<<lc[i]%k<<endl;
  8.             lc[i+1]+=(lc[i]%k)*10000;
  9.        }
  10.        int temp = lc[i]%k,flag = lc[i+1];
  11.        int r = 1;
  12.        while(flag)            //最后一个乘以10,100,还是1000由其位数来
  13.        {                      //决定。
  14.              flag/=10;
  15.              r*=10;
  16.        }
  17.        temp = temp*r+lc[i+1];
  18.        //if(k==23) cout<<lc[i]<<" "<<lc[i]%k<<endl;
  19.        if(temp%k==0) return true;
  20.        return false;
  21. }

原创粉丝点击