是求两个整数的最大公约数,返回值是正整数,那为什么gcd(28,1.135181137086446e+018)这个返回值为何为负?
2 回答
哔哔one
TA贡献1854条经验 获得超8个赞
就是p取为其中与q互素的那些元素
————————————————————————————
在matlab中可以利用逻辑值提取矩阵元素。方法是
B=A(L)
其中L是和A的size完全一致的0-1逻辑矩阵,所得的B是A中与L对应位置为1的那些元素所组成的向量。
在本例中,gcd(q,p)==1就是0-1逻辑向量,若p中与q的最大公约数为1则为1(即T),否则为0(即F).于是p = p(gcd(q,p)==1)就把p中那些与q互素的元素重新定义为p了 。与其等效的语句还可写成p(gcd(q,p)~=1)=[];意思是把那些不互素的元素给删了。
慕尼黑的夜晚无繁华
TA贡献1864条经验 获得超6个赞
警告说的很清楚啊 数字太大了 结果不对。
不过这个求最大公约数,手算也可以把 28 = 2*2*7
显然1.135181137086446e+018能被4和7整除,所以最大公约数就是28。
有些东西知道原理,不一定要求助工具的啊
gcd(28,1.135181137086446e+018)
Warning: Inputs contain values larger than the largest consecutive flint.
Result may be inaccurate.
> In gcd>warnIfGreatThanLargestFlint at 77
In gcd at 43
ans =
-4
添加回答
举报
0/150
提交
取消
