当前位置: 首页 > news >正文

数论初步

  • 求两个数的最大公约数
  1. 1、高精度运算
  2. 2、唯一分解定理:将两个数分解为素数的 n 次方的形式,然后依次计算;
  3. 3、欧几里得算法:
1 int gcd(int a,int b) {
2     return b==0 ? a : gcd(b,a%b);
3 }

 

  • 最小公倍数 = a * b / gcd(a,b),注意精度;

 

ax+by+c = 0 直线上有多少个整点 (x,y) 满足 x 属于 [x1,x2],y 属于 [y1,y2]。
这是扩展欧几里得算法:

首先解决扩展欧几里得 ax + by = gcd(a,b),x,y为整数;

 1 void gcd(int a,int b,int& d,int& x,int& y) {
 2     if(!b) {
 3         d = a;
 4         x = 1;
 5         y = 0;
 6         // gcd(a,0) = 1*a + 0*0 = a;
 7     }
 8     else {
 9         gcd(b,a%b,d,y,x);
10         y-=x*(a/b);
11     }
12 }

找到了ax + by = gcd(a,b) 的一组解。那么其他解呢?

 

然后这还只是 = gcd(a,b),当移项等于 -c 的时候情况呢?

其实可以通过上面的情况转换过来;

当 c 是 gcd(a,b) 的倍数的时候有解,否则无解。其中一个组解是:

其他解:

 

同余与模运算:

大整数取模:(就是小学生模拟除法运算)

1     scanf("%s%d",n,&m);
2     int len = strlen(n);
3     int ans = 0;
4     for(int i=0;i<len;i++) 
5         ans = (int)(((long long)ans*10 + n[i]-'0')%m);
6     printf("%d\n",ans);

 

幂取模:(俗称快速幂,二分的思想)

1 int pow_mod(int a,int n,int m) {
2     if(n==0) return 1;
3     int x = pow_mod(a,n/2,m);
4     long long ans = (long long)x*x%m;
5     if(n%2==1) ans = ans*a%m;
6     return (int)ans;
7 }

 

模线性方程组:ax≡b(modn) 同余

即: ax-b = ny;扩展欧几里得求解;

 

筛素数:

 

    // 0 是 素数
    memset(vis,0,sizeof(vis));
    for(int i=2;i<=n;i++) {
        for(j=i*2;j<=n;j+=i)
            vis[j] = 1;
    }

此算法效率已经足够了;

 

改进:

    int m = sqrt(n+0.5);
    memset(vis,0,sizeof(vis));
    for(int i=2;i<=m;i++) {
        if(!vis[i]) {
            for(j=i*i;j<=n;j+=i)
                vis[i] = 1;
        }
    }

 

素数定理:

不超过 x 的素数的个数,约等于。

 

转载于:https://www.cnblogs.com/TreeDream/p/6664761.html

相关文章:

  • 吃6大排毒蔬菜 让你年轻10岁
  • modelsim使用常见问题及解决办法集锦 ②
  • stm32 串口发送字符串丢失第一个字节
  • 试安装 VS2010
  • 14-hadoop-运行的2种方式
  • 临时表和变量表的区别
  • Flink – submitJob
  • 经典SQL语句大全(2)
  • 四方联合启动医保移动支付试点 激活移动医疗产业链
  • 编辑工具使用技巧-Ultraedit、Editplus
  • 8个Javascript小技巧,让你写的代码有腔调
  • 常用 SQL 语句大全
  • 蓝桥杯 取球游戏(博弈)
  • 辅助域控及dns设置详解
  • [转载]等角(斜45度)游戏与数学
  • MD5加密原理解析及OC版原理实现
  • Meteor的表单提交:Form
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • REST架构的思考
  • Spring Cloud中负载均衡器概览
  • Web设计流程优化:网页效果图设计新思路
  • windows下mongoDB的环境配置
  • 产品三维模型在线预览
  • 彻底搞懂浏览器Event-loop
  • 程序员最讨厌的9句话,你可有补充?
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 今年的LC3大会没了?
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • #mysql 8.0 踩坑日记
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (译)2019年前端性能优化清单 — 下篇
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .NET Core 通过 Ef Core 操作 Mysql
  • .net 怎么循环得到数组里的值_关于js数组
  • .NET6 命令行启动及发布单个Exe文件
  • .NET正则基础之——正则委托
  • @SuppressLint(NewApi)和@TargetApi()的区别
  • [ 2222 ]http://e.eqxiu.com/s/wJMf15Ku
  • [ vulhub漏洞复现篇 ] AppWeb认证绕过漏洞(CVE-2018-8715)
  • [ 常用工具篇 ] AntSword 蚁剑安装及使用详解
  • [20140403]查询是否产生日志
  • [android] 看博客学习hashCode()和equals()
  • [BSGS算法]纯水斐波那契数列
  • [Bugku]密码???[writeup]
  • [github全教程]github版本控制最全教学------- 大厂找工作面试必备!
  • [iOS]把16进制(#871f78)颜色转换UIColor
  • [Kubernetes]9. K8s ingress讲解借助ingress配置http,https访问k8s集群应用
  • [LeetBook]【学习日记】获取子字符串 + 颠倒子字符串顺序