数论-取模,求余?

看了ACM-ICPC系列之数论中的定义,取模运算是这样子的。

给定一个正整数p,任意一个整数n,一定存在等式 :
n = kp + r ;
其中 k、r 是整数,且 0 ≤ r < p,则称 k 为 n 除以 p 的商,r 为 n 除以 p 的余数。
 
言下之意就是,余数肯定>0
于是很不开心,写了个程序测试下:
1     printf("(7)MOD5    =%d\n",7%5);
2     printf("(-7)MOD5   =%d\n",(-7)%5);
3     printf("(7)MOD(-5) =%d\n",7%(-5));
4     printf("(-7)MOD(-5)=%d\n",(-7)%(-5));

结果为:

完全不一样啊,颠覆我的世界观啊。。!

后面百度了下才发现原来。

取模运算(“Modulo Operation”)和取余运算(“Remainder Operation”)两个概念有重叠的部分但又不完全一致。主要的区别在于对负整数进行除法运算时操作不同。

另外各个环境下%运算符的含义不同,比如c/c++,java 为取余,而python则为取模。

然后,以后就叫取余了,不叫取模了。。

 

posted @ 2015-11-18 10:57  chenhuan001  阅读(804)  评论(0编辑  收藏  举报