Chinaunix首页 | 论坛 | 博客
  • 博客访问: 176918
  • 博文数量: 43
  • 博客积分: 611
  • 博客等级: 中士
  • 技术积分: 1053
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-02 13:37
文章存档

2015年(3)

2013年(23)

2012年(17)

我的朋友

发布时间:2013-01-02 21:07:29

         问题描述:在做筛法求质数的问题时,在删除非质数的数据时,有很多是重复删除的。例如,如果有一个数是3x7x17x23,那么在删除3的倍数时会删除它,删除7,17与23的倍数时也都会删除它。请写一个程序,在删除非质数时"绝对"不做重复的工作。         思路:有一个因式分解定理:任何一个合数都可以分解成若干个质数相乘的形式。那么,num一定可以分解成p的i次方乘以q的形式(p,q是质数且p<q)。所以,需要去除的数就变成了p的2次方,p的3次方,p的4次方......以......【阅读全文】

阅读(1093) | 评论(0) | 转发(0)

发布时间:2012-12-30 22:11:59

        问题描述:使用筛法求质数。有一个很神奇的筛子,可以给它一个数i,这个筛子有办法把i的所有倍数去掉。请用这个方法求出2到N之间的所有质数。要求,程序不能使用乘法和除法,只能用加或减,以求加快速度。        该问题的思路来自《C语言名题精选百则技巧篇》,很惭愧,我对这样的涉及一些数学知识的题很少有解决的办法,我需要在这一方面加强。        我把书中的思路归纳如下,并加上了我自己的一些想法。       ......【阅读全文】

阅读(1305) | 评论(0) | 转发(0)

发布时间:2012-12-29 21:40:32

       昨天太忙,没有时间做一个题,先记着,明天来补。       问题描述很简单,就是求N之内的所有质数并且打印出来。       思路:求质数有很多方法,我这里用一种比较高效的方法。我一步一步地说明方法。      1.比如判断一个数num是否为质数,那么就用num去对"i(i从2开始)直到根号num"取模,如果都不能整除就说明num是质数。      2.但是这样会有很多次多余的计算。从1到N,有很多数是......【阅读全文】

阅读(1220) | 评论(0) | 转发(1)

发布时间: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......【阅读全文】

阅读(1220) | 评论(0) | 转发(0)

发布时间: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......【阅读全文】

阅读(1190) | 评论(0) | 转发(0)
给主人留下些什么吧!~~
留言热议
请登录后留言。

登录 注册