【轉】數學與編程——求余、取模運算及其性質

一、求余運算(Remainder)

(參考維基百科:?http://zh.wikipedia.org/wiki/余數??http://en.wikipedia.org/wiki/Remainder?http://en.wikipedia.org/wiki/Euclidean_divisionhttp://zh.wikipedia.org/wiki/同余)

Euclidean division:Given two integers a and b, with b ≠ 0, there exist unique integers q and r such that a = bq + r and 0 ≤ r < |b|, where |b| denotes the absolute value of b.

(術語:? a 被除數 dividend ; b 除數 divisor;q 商 quotient;r 余數 remainder)

按照上面的定義:余數唯一并始終大于或等于0,并可以拓展到兩個整數為正數或負數的情況。

但是,程序設計語言求余算法并不是按照上面的定義來執行。

我們引出另一種余數定義:a = bq + r and 0 <= |r| < |b| 。于是,我們可以發現這種情況下余數可能不止一個。

例子:a = 43 b = 5時:

43 = 5 * 8 + 3 : q = 8;r = 3 (r > 0)

43 = 5 * 9 -? 2 : q = 9;r = -2 (r < 0)

當a 和 b 含有負數時也存在這兩種余數。

例子:a = 43 b = -5時:

43 = -5 * -8 + 3 : q = -8;r = 3 (r > 0)

43 = -5 * -9 -? 2 : q = -9;r = -2 (r < 0)?

大多數程序設計語言要求余數與被除數的正負號相同(參考自《C陷阱與缺陷》,強調了程序的可移植性問題,即被除數或除數含有負數時要謹慎對待)。這說明不同程序設計語言實現時對上述例子求余時可能是上面不同的解。

二、取模運算 (Modulo)

(參考維基百科:http://en.wikipedia.org/wiki/Modulo_operation??http://en.wikipedia.org/wiki/Modular_arithmetic)

In computing, the modulo operation finds the remainder after division of one number by another (sometimes called modulus).

上面這句話說明,取模運算和求余運算的目標都是一致的。只是不同程序設計語言時實現的方式可能不同,也就是上面所說的采用另一種余數定義時,含有兩種余數結果。一些語言可能會采取第一個結果;另一些語言可能會采取第二個結果;還有些語言可能會把取模和求余分開定義,分別采取兩種結果。維基百科里面就列出了一些程序設計語言采取的操作,常見的為以下幾種:

1.求余結果或取模結果的正負號與被除數相同;

2.求余結果或取模結果的正負號與除數相同;

3.求余結果或取模結果的總是正數;

4.求余結果或取模結果由實現定義;

5.求余結果或取模結果為最接近0的數;

求余運算和取模運算小結:有人會把取模運算和求余運算分開解釋,又采用特定的語言去舉例,我認為這兩種運算目標都是一致,只是求余運算傾向于數學,而取模運算傾向于計算機科學,之所以不同語言會有不同的結果,本質是因為根據求余運算定義導致余數不唯一時不同程序設計語言采用了不同的結果,但他們都會根據某種依據來給出唯一的結果。這也告訴我們,程序移植時必須當心這種差別,特別是當兩個整數含有負數的情況。

三、取模運算性質

術語:

For a?positive?integer n, two integers a and b are said to be congruent modulo n, and written as

一些有用的性質(可證明):

如果a≡b(mod m),x≡y(mod m),則a+x≡b+y(mod m)。

如果a≡b(mod m),x≡y(mod m),則ax≡by(mod m)。

如果ac≡bc(mod m),且c和m互質,則a≡b(mod m) (就是說同余式兩邊可以同時除以一個和模數互質的數)。

?

?

【來源】

轉載于:https://www.cnblogs.com/skullboyer/p/9437670.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/451730.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/451730.shtml
英文地址,請注明出處:http://en.pswp.cn/news/451730.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

javax.net.ssl.SSLException MESSAGE: closing inbound before receiving peer‘s close_notify

1. 問題描述&#xff1a; ** BEGIN NESTED EXCEPTION ** javax.net.ssl.SSLException MESSAGE: closing inbound before receiving peers close_notifySTACKTRACE:javax.net.ssl.SSLException: closing inbound before receiving peers close_notifyat sun.security.ssl.Alert.…

提高虛擬機運行速度方法

原網頁 要我注冊才能復制... 所以我只記錄了那個網址&#xff0c;我的情況是啟動很慢&#xff0c;照作后有效果。 該網址&#xff1a;提高虛擬機速度

InputStream 、 InputStreamReader和BufferedReader

InputStream &#xff1a; 是所有字節輸入流的超類&#xff0c;一般使用它的子類&#xff1a;FileInputStream等&#xff0c;它能輸出字節流&#xff1b;InputStreamReader &#xff1a; 是字節流與字符流之間的橋梁&#xff0c;能將字節流輸出為字符流&#xff0c;并且能為字節…

多線程原理分析面試題理解

系列前言 本系列是本人參加微軟亞洲研究院&#xff0c;騰訊研究院&#xff0c;迅雷面試時整理的&#xff0c;另外也加入一些其它IT公司如百度&#xff0c;阿里巴巴的筆試面試題目&#xff0c;因此具有很強的針對性。系列中不但會詳細講解多線程同步互斥的各種“招式”&#xff…

Could not load driverClass “com.mysql.jdbc.Driver“

1. 問題描述 Could not load driverClass “com.mysql.jdbc.Driver” 2. 解決辦法 檢查是否成功導入了mysql的jdbc的jar包 導入后成功解決 參考文獻&#xff1a; https://blog.csdn.net/weixin_43433032/article/details/98494228 感謝作者分享&#xff01;

luogu2034

/** 正難則反* f[i] 表示前 i 個數中被刪除的數的最小和* f[i] min(f[j]) num, i - k 1 < j < i;* 單調隊列維護 */ #include <bits/stdc.h>#define LL long longconst int N 1e5 10;LL tot, d, n, k; LL p[N], head 1, tail 1; LL q[N], f[N], ans;int mai…

Django的models操作

一、先看單表操作 增 方式1&#xff1a; models.book.objects.create(Book_name "aaa",Book_info "bbb",Book_price "ccc",Book_num "ddd")方式2&#xff1a;用2個*號傳遞一個字典進去  book_info {"Book_name":"…

ngingx安裝錯誤 ./configure: error: the HTTP rewrite module requires the PCRE library.

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. ngnix 安裝報錯&#xff1a; 2. 解決&#xff1a; 安裝pcre-devel解決問題&#xff0c;運行命令 yum -y install pcre-devel 3.…

32--數組中重復的數字

1. 問題描述 找出數組中重復的數字。 在一個長度為 n 的數組 nums 里的所有數字都在 0&#xff5e;n-1 的范圍內。數組中某些數字是重復的&#xff0c;但不知道有幾個數字重復了&#xff0c;也不知道每個數字重復了幾次。請找出數組中任意一個重復的數字。 示例 1&#xff1…

實習期間的一些思考整理(3)2018.4.12~4.13

青云訣游戲體驗日報-2018.4.12 今日關鍵點&#xff1a;核心玩法 青云訣的核心玩法是“戰斗”、“成長”、“探索”&#xff08;這三點也是RPG類型的要素&#xff09;&#xff0c;側重于成長。 我是這樣想的&#xff0c;要想找出核心玩法是什么&#xff0c;就要看哪些玩法沒了&a…

整理的最全 python常見面試題(基本必考)

訪問flyai.club&#xff0c;一鍵創建你的人工智能項目作者&#xff1a;大蛇王https://blog.csdn.net/t8116189520/article/details/801655891、大數據的文件讀取① 利用生成器generator②迭代器進行迭代遍歷&#xff1a;for line in file2、迭代器和生成器的區別1)迭代器是一個…

Nginx安裝手冊(摘自入云龍老師教案,親測可用)

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 Nginx安裝手冊 一、 nginx安裝環境 nginx是C語言開發&#xff0c;建議在linux上運行&#xff0c;本教程使用Centos6.5作為安裝環境。 …

33--二維數組中的查找

1.問題描述 在一個 n * m 的二維數組中&#xff0c;每一行都按照從左到右遞增的順序排序&#xff0c;每一列都按照從上到下遞增的順序排序。請完成一個函數&#xff0c;輸入這樣的一個二維數組和一個整數&#xff0c;判斷數組中是否含有該整數。 示例: 現有矩陣 matrix 如下&…

XML Schema是什么

XML Schema 本身也是一種XML構造&#xff0c;它用來描述[哪個元素&#xff0c;在什么時候出現]&#xff0c;[該元素具有什么樣的屬性]等等&#xff0c;也就是說&#xff0c;XML Schema是對XML的樹形構造加以描述說明的一種語言。原本&#xff0c;使用DTD對XML的樹形構造加以描述…

js之base64上傳圖片

首先要搭建好springmvc&#xff0c;詳見https://www.cnblogs.com/zzb-yp/p/9295397.html 整體思路&#xff1a;前端代碼包括顯示和傳參&#xff08;這里的參數主要就是圖片的base64字符串&#xff09;&#xff0c;顯示主體部分是type“file”類型的input組件和一個提交按鈕 …

一些常用軟件的網絡端口協議分類介紹

最近有朋友請教我有關實現校園局域網視頻功能軟件的編寫問題&#xff0c;涉及到端口有關的知識&#xff0c;自己查了一些資料&#xff0c;發現這篇文章總結得比較不錯&#xff0c;常用軟件涵蓋得比較豐富&#xff0c;很實用&#xff0c;需要用到的時候可以查閱。于是決定將這篇…

WPF 使用皮膚影響按鈕自定義

在WPF項目中使用了 Theme的皮膚后&#xff0c;發現自定義的按鈕全部都是 皮膚里面的樣式&#xff0c;如下圖&#xff1a; 要自定義樣式&#xff0c;只有不給按鈕使用皮膚樣式。 如果想給某一個控件使用樣式&#xff0c;在前端Xaml的控件中&#xff0c;設置一下屬性即可&#xf…

各種數據庫對應的jar包、驅動類名和URL格式

見&#xff1a;http://blog.csdn.net/xuguiyi100/article/details/7970379 maven/Java/web/bootstrapQQ群&#xff1a;566862629。希望更多人一起幫助我學習。 1.1. 各種數據庫對應的jar包 具體如下&#xff1a; 數據庫類型 對應的Jar文件 Oracle 8i classes12.zip 或…

34--替換空格

1.問題描述 請實現一個函數&#xff0c;把字符串 s 中的每個空格替換成"%20"。 示例 1&#xff1a; 輸入&#xff1a;s “We are happy.” 輸出&#xff1a;“We%20are%20happy.” 2.解題思路 由于每次替換從 1 個字符變成 3 個字符&#xff0c;使用字符數組可方…