数学问题
朝杨
这个作者很懒,什么都没留下…
展开
-
C语言:素数筛法与分解素因数
一、素数筛法素数筛法是关于求小于某个大数(正整数)的所有素数的算法,首先有理论:任何整数n≥2都可以分解成若干质数的乘积,即n=p1p2···pr。用筛法求素数的基本思想是:把从1开始的、某一范围内的正整数从小到大顺序排列, 1不是素数,首先把它筛掉。剩下的数中选择最小的数是素数,然后去掉它的倍数。依次类推,直到筛子为空时结束。如有:1 2 3 4 5 6 7 8 9原创 2018-01-30 23:35:51 · 1322 阅读 · 1 评论 -
整除问题:给定n,a求最大的k,使n!可以被a^k整除但不能被a^(k+1)整除
题目描述:给定n,a求最大的k,使n!可以被a^k整除但不能被a^(k+1)整除。输入:两个整数n(2输出:一个整数.样例输入:6 10样例输出:1本题目不采用轮流试的暴力解法,因为n若足够大,比如1000!实则是一个很大的数(相当大,超出想象)。于是我们想一下,既然要求整除,说明两个数n!的素因数与a的每个素因数都是可以原创 2018-02-01 17:37:51 · 5092 阅读 · 2 评论 -
数位拆解
数位拆解即把一个给定的数字各个数位上的数字拆开,如1234即拆成1,2,3,4。题目描述:写个算法,对2个小于1000000000的正整数,进行拆分后按如下示例求结果示例:123*45 = 1*4+1*5+2*4+2*5+3*4+3*5 = 54样例输入: 123 45样例输出: 54问题分析: 一个四位正整数x,可以写为: x=a*1原创 2018-01-28 11:57:45 · 2196 阅读 · 0 评论 -
进制转换
题目描述: 求任意两个不同进制非负整数的转换(二进制~十六进制),所给整数在long所能表达的范围之内。不同进制的表示符号为(0,1,...9,a,b,...,f),或者(0,1,...,9,A,B,...,F)。输入: 输入只有一行,包含三个整数a,n,b。a表示其后的n是a进制整数,b表示将a进制整数n转换成b进制的整数。a,b均是十进制整数,2输出: 可能有多组测试数据,原创 2018-01-28 17:44:42 · 239 阅读 · 0 评论 -
C语言求最大公约数、最小公倍数
一、求最大公约数先分析一个问题:如何求任意两个非负整数的最大公约数(GCD),这里我们不用逐个试的暴力破解,而采用巧妙的欧几里得算法。先看如下证明过程(证明主要摘自百度百科~~):定理:两个整数的最大公约数等于其中较小的那个数和两数相除余数的最大公约数任意两个非负整数a,b,(不妨设a>b 且r=a mod b ,r不为0)a可以表示成a = k*b + r(a原创 2018-01-29 17:59:10 · 2730 阅读 · 0 评论