大大大大数怎么求余?C语言
問題:
一個特別大的數除以23求余數用C語言應該怎么算啊?比如23232323232323232323232323232323232323232323232323232323233除以23,怎么算余數?
數據類型在計算機的存儲是有大小限制的,所以才出現了大數求余這種問題,相對應的,我們的錢存儲在銀行也不可能用數字來表示,畢竟整個中國人的錢,遠遠超過了最大的數據類型的大小。
計算計算機最大數據類型的值:
#include?"stdio.h"int?main() {printf("0~%lu\n",(1UL?<<?sizeof(unsigned?long?long?int)*8)?-1);return?0; }輸出
0~18446744073709551615我們所說的大數是數字大于最大存儲的變量,一個unsigned long long int存儲最大的自然數是18446744073709551615,如果自然數大于這個數,就會溢出了。
有事說事,這個題目涉及數學知識,但是我覺得學好數學也是學好計算機的基礎。
—— 有個知乎的同學進行了論證
對于取模23,只需要
1.聲明結果變量,假設它是ans, 令ans = 0作為起始條件。
2.取走最高位數字,假設它是t,令 ans = ans +t.
3.如果還有數字沒有被取走,則令 ans = (10*ans )%23,并返回第二步。
最終得到的 ans就是答案
—— 代碼如下
#include?"stdio.h"int?main() {int?c;int?ans?=?0;/*如果沒有按下Ctrl+C?就一直在while循環里面判斷*/while?((c?=?getchar())?!=?EOF)?{if?(c?==?'\n')?{/*輸出結果*/printf("%d\n",?ans);ans?=?0;}?else?{/*遞歸計算*///?c?in?'0'...'9'c?-=?'0';ans?=?ans?+c;ans?=?(ans*10)%3;}}return?0; }程序輸出結果
weiqifa@bsp-ubuntu1804:~/c/dashuqiuyu$?gcc?1.c?&&?./a.out 0 0 1 1 2 2 3 0 12312312312 0 3235 1 23 2 5 2 156151859198153151561561561561561 0數學論證過程
https://www.zhihu.com/question/431163782/answer/1644964013
推薦閱讀:
專輯|Linux文章匯總
專輯|程序人生
專輯|C語言
我的知識小密圈
關注公眾號,后臺回復「1024」獲取學習資料網盤鏈接。
歡迎點贊,關注,轉發,在看,您的每一次鼓勵,我都將銘記于心~
總結
以上是生活随笔為你收集整理的大大大大数怎么求余?C语言的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 雷神笔记本关闭广告
- 下一篇: 躺平,躺下就能赢吗?
