如何判断一个整数是不是一个大整数的因子
来源:互联网 发布:hypervisor软件 编辑:程序博客网 时间:2024/05/01 05:25
这是一个同模取余的问题,我们可以先用一个数组把那个大整数装起
来,然后对数组中的每一个元素取余并乘以它的进制把它加到它的下一位元素里
面,最后判断数组中的最后一个元素是否能被那个除数整除。
如果大整数的位数很大,我们可以采用千进制,或万进制来对它取余
,这样可以提高几倍的效率。但是在倒数第二位元素取余之后,到底是乘以10,
100,还是1000是由最后一个元素的位数来决定的,假如用千进制来取余,那么
变换大整数后,数组中的元素除了最后一个元素之外,其余的数都三位数,最后
一个元素可能是一位,二位或三位。
下面是判断整数k是否是变换后的大整数lc[]的因子的代码:
来,然后对数组中的每一个元素取余并乘以它的进制把它加到它的下一位元素里
面,最后判断数组中的最后一个元素是否能被那个除数整除。
如果大整数的位数很大,我们可以采用千进制,或万进制来对它取余
,这样可以提高几倍的效率。但是在倒数第二位元素取余之后,到底是乘以10,
100,还是1000是由最后一个元素的位数来决定的,假如用千进制来取余,那么
变换大整数后,数组中的元素除了最后一个元素之外,其余的数都三位数,最后
一个元素可能是一位,二位或三位。
下面是判断整数k是否是变换后的大整数lc[]的因子的代码:
- bool isfactor(int k,int length) //length表示数组的长度,用10000来取余
- { //的,lc[]是把大整数化为10000进制后
- int i; //的数组
- for(i=0;i<length-2;++i)
- {
- //if(k == 23)
- // cout<<lc[i]<<" "<<lc[i]%k<<endl;
- lc[i+1]+=(lc[i]%k)*10000;
- }
- int temp = lc[i]%k,flag = lc[i+1];
- int r = 1;
- while(flag) //最后一个乘以10,100,还是1000由其位数来
- { //决定。
- flag/=10;
- r*=10;
- }
- temp = temp*r+lc[i+1];
- //if(k==23) cout<<lc[i]<<" "<<lc[i]%k<<endl;
- if(temp%k==0) return true;
- return false;
- }
- 如何判断一个整数是不是一个大整数的因子
- 判断一个整数是不是2的幂
- 判断一个整数是不是回文
- 判断一个整数是不是2的整数幂
- c语言:判断一个整数是不是2的整数次方
- 如何判断一个整数是不是完全平方数
- 如何判断一个整数是不是奇数----最佳方式
- IOS中如何判断一个数是不是整数
- js如何判断一个数是不是整数类型
- 如何判断一个整数是不是奇数----最佳方式
- 找出一个整数的因子
- Odd - 判断一个整数是不是奇数
- System.Odd - 判断一个整数是不是奇数
- 判断一个整数是不是回文数
- 怎样判断一个整数是不是回文数?
- 判断一个无符号整数是不是2的幂
- 判断一个整数是不是2的阶次方数
- 判断一个整数是不是2的阶次方数
- Pattern Modifiers - 规则表达式的修饰符
- [转]FOR命令中有一些变量以及他们的用法
- WinForm中设计时与DesignMode的区别
- 加班mm一样可以“睡”出美丽肌肤
- 回复[ php有哪些好的书啊]
- 如何判断一个整数是不是一个大整数的因子
- 什么是CentOS
- dynamic_cast详解
- 异形对话框代码整理
- C#编程 忘记密码功能的实现方法
- java.lang.String的split()方法
- struts upload FormFile
- Windows消息机制
- 独立思考之慎用孤例