在编程语言中的数学问题
目录
一、最大公约数(公因数)
方法一:暴力循环
方法二:递归求解
二,最小公倍数
三、素数
四、水仙花数、玫瑰花数....
方法一、一位一位枚举
方法二:整体枚举
在很多时候,编程语言不经可以方便的让我们进行一些操作,不仅仅是模拟,也可以解决数学问题,今天就给大家讲几个编程语言中的经典数学问题:
一、最大公约数(公因数)
最大公约数是指两个数所共同包含的最大因数,例如12和18的公约数有 1,2,3,6,所以12和18的最大公约数为 6。
如果两个数互质(两个数都只有公因数1时,两数互质,奇数和奇数互质,质数和任何数互质,1和任何数互质),最大公约数为1。
在编程中,最好用的是eucilid算法(辗转相除法),是求两个整数最大公约数的算法。这是已知最古老的算法,可以追溯到公元前300年。它首次出现于欧几里德的《几何原本》中,在中国最早出现在东汉的《九章算术》中。
算法描述如下,设两个数a,b。
(1)令r = a mod b
(2)若r = 0,则b是最大公约数,算法结束,若r≠0,则令a = b,b = r继续。
上代码!
方法一:暴力循环
#include<iostream>
using namespace std;
int a,b,r;
int main()
{cin>>a>>b;r = a%b;while(r!=0){a = b; b = r; r = a%b; }cout<<b;return 0;
}
方法二:递归求解
#include<bits/stdc++.h>
using namespace std;
int gcd(int a,int b){if(b == 0){return a;}else{return gcd(b,a%b);}
}
int main()
{int a,b;cin>>a>>b;cout<<gcd(a,b)<<" ";return 0;
}
二,最小公倍数
最小公倍数的算法实现很简单,设两个数a,b,先求出a和b的最大公约数,再用a与b的乘积,再除以最大公约数,得出最小公倍数。
代码如下:
#include<bits/stdc++.h>
using namespace std;
long long n,m;
int GCD(int x,int y){if(y == 0){return x;}else{return GCD(y,x%y);}
}
int lcm(int a,int b){return a*b/GCD(a,b);
}
int main(){cin>>n>>m;cout<<lcm(n,m);return 0;
}
三、素数
素数为因数只有1和它本身的数,1既不是素数也不是合数,0(不带他玩,没意义),质数有无穷个,只有一个偶数(2)。
代码模拟,可以将因数枚举,从2到根号n,如果i可以整除这个数,那么不是质数。
放一下函数部分:
bool is_prime(int n){for(int i = 2 ; i<=sqrt(n) ; i++) if(n%i == 0) return 0;//导入cmath库来使用sqrt开根号return 1;
}
四、水仙花数、玫瑰花数....
水仙花数:水仙花数是指一个 3 位数,它的每个位上的数字的 3 次幂之和等于它本身,例如153就是一个水仙花数(1³+3³+5³ = 1+27+125 = 153)
玫瑰花数:所谓“玫瑰花数”,指一个四位的正整数,等于它的个位数字4次方,加十位数字4次方,加百位数字4次方,加千位数字4次方的和。
暴力枚举就可以了
方法一、一位一位枚举
玫瑰花数代码:
#include<iostream>
using namespace std;
int main()
{int i,j,k,l,n;for(i = 1;i<=9;i++){for(j = 0;j<=9;j++){for(k = 0;k<=9;k++) {for(l = 0 ; l<=9 ; l++){n = i*1000+j*100+k*10+l;if(i*i*i*i+j*j*j*j+k*k*k*k+l*l*l*l == n) cout<<n<<endl;}}}}return 0;
}
方法二:整体枚举
水仙花数代码:
#include<iostream>
#include<cmath>
using namespace std;
int main()
{int a,b,c;for(int i = 100;i<=999;i++){a = i/100;b = i/10%10;c = i%10;if(pow(a,3) + pow(b,3) + pow(c,3) == i) cout<<i<<" ";}return 0;
}
在编程语言中的数学问题相关推荐
- Shell脚本笔记(三)shell中的数学计算
shell中的数学计算 一.使用方括号 #!/bin/bash a=10 b=29 c=88res=$[$a * ($c-$b)] echo $res 二.使用(()) echo $((1+9)) ( ...
- python绘制如下图形、小三角形边长20_在编程中发现数学之美——使用Python小龟绘制多边形...
在使用数学知识画出很酷的各种图形之前,你需要先学习Python编程语言的基础知识.本文将会带你熟悉以下编程概念:循环.变量.函数.使用小龟模块绘制图像.本文假设你已经安装了Python,如果没有,欢迎 ...
- A02_Python(基本数据类型,容器,函数,类),Numpy(数组array,数组索引,数据类型,数组中的数学,广播)
Python的版本 基本数据类型 与大多数语言一样,Python有许多基本类型,包括整数,浮点数,布尔值和字符串.这些数据类型的行为方式与其他编程语言相似. Numbers(数字类型):代表的是整数和 ...
- 计算机科学中的数学(一)
1.函数 数学函数三要素:定义域.对应法则.值域. 对应于编程语言中的函数:形式参数.函数主体(逻辑.计算规则).返回值. 2.命题 (1)命题的真假对应分支语句的真与假 分支语句判断条件有无遗漏,从 ...
- 信奥中的数学:斐波那契数列
神奇的斐波那契数列-科学性与艺术性 神奇的斐波那契数列-科学性与艺术性_哔哩哔哩_bilibili 斐波那契数列 斐波那契数列_哔哩哔哩_bilibili 黄金分割比与斐波那契数列形成的最美比例,这是 ...
- Python中的数学运算操作符使用进阶
原文链接:https://www.jb51.net/article/86988.htm 这篇文章主要介绍了Python中的数学运算操作符使用进阶,也包括运算赋值操作符等基本知识的小结 Python中对 ...
- [人工智能-数学基础-1]:深度学习中的数学地图:计算机、数学、数值计算、数值分析、数值计算、微分、积分、概率、统计.....
作者主页(文火冰糖的硅基工坊):https://blog.csdn.net/HiWangWenBing 本文网址:https://blog.csdn.net/HiWangWenBing/article ...
- 信息学奥赛学习规划 国内顶尖信息学奥赛名校训练模式 信奥中的数学
从搜狗CEO王小川(信息学金牌),看这二十几年中国奥赛金牌的去向 从搜狗CEO王小川(信息学金牌),看这二十几年中国奥赛金牌的去向 国内顶尖信息学奥赛名校训练模式有感 国内顶尖信息学奥赛名校训练模式有 ...
- 区块链中的数学(四十二)---基于RSA的VRF(随机可验证函数)
文章来源区块链技术公众号"blocksight",原文欢迎关注! 写在前面 上一节说了VRF(随机可验证函数)概述,由于VRF是与公钥密码学相结合的,自然少不了最常见的公钥密码学体 ...
最新文章
- ollvm 编译器优化的bug
- HDFS以IO流的形式上传和下载文件案例
- IE6.0,ie7.0与Firefox的CSS兼容性问题
- Linux系统管理01
- mysqld --initialize --console失败_超详细的mysql awr监控系统系统搭建教程--第一部分...
- java解析shell命令_Android中执行java命令的方法及java代码执行并解析shell命令
- Windows窗体和常用控件的事件处理函数
- IPv6邻居状态与邻居检测机制
- VM两个虚拟机之间的通讯测试
- JSP之jsp内置标签
- sigmoid 激励函数
- 分布式电商项目十七:商品服务-三级分类和查询
- Java学习笔记——Character类
- JAVA记忆翻牌游戏制作
- REMIX智能合约实例BALLOT分析
- eclipse 显示繁体中文问题
- 【pytorch】model.train()和model.evel()的用法
- 连接Wifi显示“无internet,安全”的七种解决方法
- 万户OA牵手携程 助力企业商旅一体化管控
- 一个关于视频播放的小项目