取模 and 求余

2023-11-04 02:48
文章标签 取模 求余

本文主要是介绍取模 and 求余,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

取模运算和求余运算的区别

标签: python语言cshell脚本编程
29454人阅读 评论(6) 收藏 举报
分类:

通常情况下取模运算(mod)和求余(rem)运算被混为一谈,因为在大多数的编程语言里,都用'%'符号表示取模或者求余运算。在这里要提醒大家要十分注意当前环境下'%'运算符的具体意义,因为在有负数存在的情况下,两者的结果是不一样的。


对于整型数a,b来说,取模运算或者求余运算的方法都是:

1.求 整数商: c = a/b;

2.计算模或者余数: r = a - c*b.


求模运算和求余运算在第一步不同: 取模求余运算在取c的值时,向0 方向舍入(fix()函数);求余取模运算在计算c的值时,向无穷小方向舍入(floor()函数)。

因此,当a和b符号一致时,求模运算和求余运算所得的c的值一致,因此结果一致。但是当符号不一致的时候,结果不一样。

具体来说,求模运算结果的符号和b一致,求余运算结果的符号和a一致


在C语言中,%符号表示的是求余运算,在python脚本中,%表示的是取模。(通常取模运算中b不允许是负数,但是在python 2.5.1里可以在%后面跟负数,因为python语言中除法的结果是向0舍入,因此计算结果是取模!)

下面表格是一些典型的取模或者求余的值。

     a   
   b   
C语言:a%b   (求余)
Python Shell: a%b(取模)
-3-5-3-3
-34-31
-32-11
-16-15
-4-3-1-1
2422
5322
4-74-3
4-31-2
-6-5-1-1

这篇关于取模 and 求余的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/342685

相关文章

算数操作符(除法操作符和取模操作符)

目录 / --- 除法操作符 整数除法 代码举例说明 代码验证  浮点数除法 代码举例说明 代码验证 % ---  取模操作符 代码举例说明 代码验证 除法操作符和取模操作符的相关案例 / --- 除法操作符 整数除法 除号的两端都是整数,执行的就是整数除法整数除法的运行规则:只保留商,去掉余数 代码举例说明 int r = 7 / 2;pri

hdu4506(快速幂取模)

小明系列故事——师兄帮帮忙 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submission(s): 4112    Accepted Submission(s): 1069 Problem Description 小明自从告别了ACM/IC

poj 3358 Period of an Infinite Binary Expansion(数论:欧拉函数+快速幂取模)

不太好理解题意的一道题 给出一个除式 要求找到对应二进制的循环起点和最小循环节长度 这里还考察了分数化小数的知识点。。。 这点不会难怪看题解都觉得很吃力 1/10 分数化小数的规律如下: 0.1 0.2 0.4 0.8 1.6 1.2 0.4(每次取左侧一位×2,如果大于10,小数位取1,再把这一位%10) 0    0    0   0    1    1    0 以1/1

poj 3070 Fibonacci(矩阵快速幂取模)

之前就听过这个东西 但是一直没遇到这个类型的题目 这道题就是典型的矩阵快速幂模板题了 根据斐波那契数列的性质以及矩阵快速幂的做法 可知: 0ms代码如下: #include <cstdio>#include <cstring>#define M 10000using namespace std;struct Matrix {int matrix[2][2];Matrix

语法07 C++ 程序中的除法和求余

程序中的除法 int / int = int double / int = double int / double = double double / double = double 规律总结 只要除号任意一边出现了double类型,结果就是double类型 只有除号两边都是int类型,结果才是int类型 这个规律也适用于加法减法和乘法 训练:三人分饼 小知妈妈早上出去买了n块

取模软件测试版生成的有斜线,但测试字库的功能是好用无限制。只需要自己开发一个字库生成软件。IDA工具,如何搜中文

IDA工具,如何搜中文 在 IDA (Interactive Disassembler) 中搜索中文字符串,可以按照以下步骤操作: 方法一:使用“搜索文本”功能 打开 IDA 并加载目标文件:启动 IDA 并打开你需要分析的二进制文件。打开搜索文本对话框: 在 IDA 的菜单栏中,选择 Search > Text...,或者按快捷键 Alt+T。 输入中文字符串: 在弹出的搜索对话框中,

hdu4704--sum--大数幂取模

做这道题学到了好多好多知识,想起了一些被遗忘的知识,收获还是很大的。 1.费马小定理的应用。首先说明一下什么是费马小定理:假如P是质数,且gcd(a,p)=1(即a,p互质),则a^(p-1)===1(mod p)。    应用为:若P为质数,且gcd(a,p)=1,则可以计算 a^n mod p的值。(n为一个无法用long long存下的大数(若不为大数直接用快速幂其实就可以了))

FZU 2018 计数 快速幂取模

题意:对于方程 x^x = a(mod p), PH想知道对于[0,p-1]内的数,有多少个这样的x满足这个方程。请注意,虽然对于0^0的值有争论,甚至不一定有意义,可是在本题中,PH认为0^0 = 1。 #include <iostream>#include <cstdio>#include <cstring>using namespace std;const int MAXN = 1

阶乘取模

Description 计算 (0! + 1! + 2! + 3! + 4! + ... + n!)%m Input 第一行输入t,表示测试数据组数每组数据输入两个数n和m0 < T <= 200 <= n < 10^100 (没有前导零)0 < m < 1000000 Output 输出(0! + 1! + 2! + 3! + 4! + ... + n!)%m的答案 Sam

求a的b次方、a的b次方对m取模

求a的b次方、a的b次方对m取模   快速计算乘方的算法,求a的b次方 如计算2^13,则传统做法需要进行12次乘法,但是可以优化: 把2*2的结果保存起来看看,是不是成了:4*4*4*4*4*4*2  再把4*4的结果保存起来:16*16*16*2  一共5次运算,分别是2*2、4*4和16*16*16*2  这样分析,我们算法因该是只需要计算一半都不到的乘法了。