Algorithm 整除性质

Algorithm 整除性质,algorithm,integer,theory,division,Algorithm,Integer,Theory,Division,以下整数算术属性是否有效 (m/n)/l == m/(n*l) 起初我以为我知道答案(不成立),但现在不确定。 它适用于所有数字还是仅适用于某些条件,即n>l 这个问题与计算机算术有关,即q=n/m,q*m!=n,忽略溢出。案例1假设m=kn+b(b您是在谈论数学整数还是编程语言中的固定宽度整数 Case1 assume m = kn+b (b<n), left = (m/n)/l = ((kn+b)/n)/l = (k+b/n)/l = k/l (b/n=0, because b<

以下整数算术属性是否有效

(m/n)/l == m/(n*l)
起初我以为我知道答案(不成立),但现在不确定。 它适用于所有数字还是仅适用于某些条件,即
n>l


这个问题与计算机算术有关,即
q=n/m,q*m!=n
,忽略溢出。

案例1假设m=kn+b(b您是在谈论数学整数还是编程语言中的固定宽度整数

Case1 assume m = kn+b (b<n),
left = (m/n)/l = ((kn+b)/n)/l = (k+b/n)/l = k/l (b/n=0, because b<n)
right = (kn+b)/(n*l) = k/l + b/(n*l) = k/l (b/(n*l)=0, because b<n)
=> left = right

Case2 assume m = kn,
left = (m/n)/l = (kn/n)/l = k/l
right = kn/(n*l) = k/l
=> left = right

So, (m/n)/l == m/(n*l)
这两个方程与数学整数相同,但如果使用固定宽度的整数,则这两个函数具有不同的溢出行为

例如,假设整数是32位的

(1310720000/65536)/65537 = 20000/65537 = 0
但是,65536*65537将使32位整数溢出,并将等于65536,因此

1310720000/(65536*65537) = 1310720000/65536 = 20000

+如果我可以的话,另一个+1显然是唯一一个抓住整数这个词的响应者!如果n*l溢出整数类型的边界,则不是真的。@mtrw公平地说,这是没有的saying@ziang,@aaa-我认为溢出是问题的一个重要部分,所以我投了否决票。现在我的否决票太老了,无法撤销。对不起,子昂。@mtrw,一点问题也没有。我们在这里学习和讨论,谁在乎投票:)这是个好答案,但是
case2
不是必需的,它只是
Case
的一个子集,其中
b==0
。你在乎像溢出这样的边缘情况吗?或者像
n/m
这样的wierd体系结构/语言舍入而不是接近零?可能重复