全部博文(43)
发布时间:2012-12-30 22:11:59
问题描述:使用筛法求质数。有一个很神奇的筛子,可以给它一个数i,这个筛子有办法把i的所有倍数去掉。请用这个方法求出2到N之间的所有质数。要求,程序不能使用乘法和除法,只能用加或减,以求加快速度。 该问题的思路来自《C语言名题精选百则技巧篇》,很惭愧,我对这样的涉及一些数学知识的题很少有解决的办法,我需要在这一方面加强。 我把书中的思路归纳如下,并加上了我自己的一些想法。 ......【阅读全文】
发布时间:2012-12-29 21:40:32
昨天太忙,没有时间做一个题,先记着,明天来补。 问题描述很简单,就是求N之内的所有质数并且打印出来。 思路:求质数有很多方法,我这里用一种比较高效的方法。我一步一步地说明方法。 1.比如判断一个数num是否为质数,那么就用num去对"i(i从2开始)直到根号num"取模,如果都不能整除就说明num是质数。 2.但是这样会有很多次多余的计算。从1到N,有很多数是......【阅读全文】
发布时间:2012-12-27 16:45:42
问题描述:假设有一个数组x[],它有n个元素,每一个都大于零;称x[0]+x[1]+.....+x[i]为前置和,而x[j]+x[j+1]+....+x[n-1]为后置和。编写程序,求出x[]中有多少组相同的前置和与后置和。 我的思路:因为这个数组都是正数,那么,对于i越大,前置和也就越大;后置和是j越小,那么后置和越大。接下来就很简单了,当以x[i]为终点的前置和大于以x[j]为起点的后置和时,j需要减去1,同理可得小于的情况。代码如下:#include &l......【阅读全文】
发布时间:2012-12-26 20:20:37
刚才那题太简单,不过瘾,再做一道题。 问题描述:已知两个元素从小到大排列的数组x[]与y[],请编写一个程序算出两个数组元素彼此之间差的绝对值中最小的一个数,此值称作数组的距离。 我的思路:关键点依然是"两个数组都从小到大排序"。那么,当x[i]==y[j]时,数组间距离为0,这肯定是最小的;当x[i]-y[j]>0时,如果i再增大,那么x[i]也会增大,那么x[i]-y[j]也会增大,而这样的增大不是我们的目标,所以此时要将j加1......【阅读全文】
发布时间:2012-12-26 19:37:07
问题描述:已知两个整数数组f[]与g[],它们的元素都已经从小到大排列好,而且两个数组中的元素都各不相同。例如,f[]中有1,3,4,7,9,而g[]中有3,5,7,8,10。试编写程序算出这两个数组之间有多少组相同的元素。就这个例子而言,f[1]与g[0]是一组,f[3]与g[2]是一组。 我的思路:关键点还是"元素都已经从小到大排列好"。那么,两个数组,一起遍历就可以解决问题。代码如下: 点击(此处)折叠或打开#include <stdio.h> ......【阅读全文】