问题:

一个特别大的数除以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语言相关推荐

  1. Fibonacci数列求余 C语言

    Fibonacci数列求余 C语言 问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是 ...

  2. java大整数的加减乘除_关于大整数的加减乘除求余运算 java

    自己用java 实现了大字符串整数的加减乘除和求余运算, 加减法的算法是模拟手工笔算的计算过程, 除法就是从最高位不停的减操作, 乘法的算法 :遍历一个数的各个位数以及他所在位置,另一个数根据这个数的 ...

  3. Large Division-----同余模定理(大数的求余)

    同余模定理 讲解转自博客: https://blog.csdn.net/qq_40873884/article/details/80312889 定义 所谓的同余,顾名思义,就是许多的数被一个数 d ...

  4. c语言怎么对大数求余,c语言取余数(c语言怎么求两数的余数)

    C语言提供了一个取余数的运算符%,称之为"模"运算符.只有两个整数之间才可以进行模运算!a % b 表示 用b来整除a,商整数,得到余数.如:5%3 = 2 4%3 =13%3 . ...

  5. c语言求3个整数的平均数程序,c语言求余(c语言求任意三个数的平均值)

    C语言提供了一个取余数的运算符%,称之为"模"运算符.只有两个整数之间才可以进行模运算!a % b 表示 用b来整除a,商整数,得到余数.如:5%3 = 2 4%3 =13%3 . ...

  6. C语言散列法求英文字母字符串求余,c语言求余数

    he00692694 2012.10.13 采纳率:48%    等级:13 已帮助:6711人 #include #include void main() { int num,num2;//这里改了 ...

  7. c语言中int下小数求余大数,Sicily1020-大数求余算法及优化

    Github最终优化代码: https://github.com/laiy/Datastructure-Algorithm/blob/master/sicily/1020.c 题目如下: 1020. ...

  8. c语言使用求余方式的转化为二进制程序,C语言第三讲 程序结构 (下).ppt

    <C语言第三讲 程序结构 (下).ppt>由会员分享,可在线阅读,更多相关<C语言第三讲 程序结构 (下).ppt(24页珍藏版)>请在人人文库网上搜索. 1.1,第三讲 程序 ...

  9. 语言求余和乘除优先级_愉快地学Java语言:第二章基本程序设计 第2讲

    导读 本文适合Java入门,不太适合Java中高级软件工程师. 本文以<Java程序设计基础篇>第10版为蓝本,采用不断提出问题,然后解答问题的方式来讲述. 本篇文章只是这个系列中的一篇, ...

最新文章

  1. rsync 同步数据
  2. 自动驾驶汽车对保险业的影响
  3. 算法导论之图的最小生成树
  4. Aupera:FPGA让视频编码与AI结合水到渠成
  5. 适合 Kubernetes 初学者的一些实战练习(一)
  6. ui自动化测试框架_浅谈前端(UI)自动化测试
  7. python 运维包_基础入门_Python-模块和包.运维开发中__import__动态导入最佳实践?
  8. 二进制安装mysql5.7
  9. Linux学习总结(六十六)打印一串数字的脚本
  10. 开发交接文档_为开发人员创造更好的设计交接体验
  11. http动态代理转socks5怎么获取?
  12. Android 使用Gallery仿3D画廊效果实现
  13. (转帖)-对乒乓球的思考
  14. 华为计步器下载手机版_华为健运动计步器
  15. 影评系统的机遇和挑战
  16. (Python)视频生成器
  17. 2022电工(初级)考题及答案
  18. 网易Java服务器端实习生电话面试
  19. 【PHP】Windows下最直接最简单查看PHP版本的方法
  20. Python Wechaty 微信聊天机器人 padlocal协议搭建指南

热门文章

  1. Creating Apps With Material Design —— Creating Lists and Cards
  2. 插入排序---希尔插入排序算法(Javascript版)
  3. 从最大似然到EM算法浅解(转载)
  4. 开发高级 Web 部件
  5. 信道和物理媒体的区别
  6. 35--用两个栈实现队列
  7. python 内置模块 subprocess
  8. mysql 集群架构_mysql企业常用集群架构
  9. 单例模式在JDK应用的源码分析
  10. CSS边框,背景,边距,溢出