8/12训练日记

今天开始了新的篇章——数论!

数论一直都是代码的重点呢!无论是从数字方面,还是从几何方面,都不算是什么容易的东西……

所以数论一定要——好好背模板……

今天开到了最大公约数!

最开始讲的还是我们的老朋友素数和约数,无论是以前做题、网上找题解,都能发现n种求解素数、约数的代码,而且一个比一个省时间!

判断素数,老方法,1~sqrt(n)试试能不能整除。

求素数,老方法+1,循环1~n,不是素数的倍数也不是素数,用一个visit[]数组标记一下,防止超时。

线性筛法暂时背不熟,这里……默写不过,看倒是看得懂,实际上想法跟上面那个有点相似,也要标记,而且要用一个数组存储所有的质数,总之这个方法没有上面的那个好用好背,我觉得现在这个水平还是看上面那俩老方法就挺好。

质因数分解,很久以前做题的时候,求质因数个数的时候,见到过类似的代码,因为看不懂而印象深刻(是记不住的那种印象深刻……),现在再看,可以理解了,比较明了,很好的方法,一看就知道不会超时,因为n本身就在随着i(因子)的变化而变化,i越大,n就会变得越小。

中心思想:2~sqrt(n)遍历,遇到是因数并且是质数的,就放在数组里面,并且从n里面除去所有的i。最后判断你、本身是不是质数(最后的结果留下大于1说明除不尽,是质数,要加到质数的数组里面,否则不加)。

约数也是比较常考,但是最开始的那些东西啊,真的很不好背唉,那都是一些什么东西啊!混蛋,看不懂,以前也没有考过,所以就不想看……然后导致后面有个例题看不懂……呜呜呜,好难背啊这里。

求n的约数很简单,就是一个个的遍历,并且约数都是成对出现的,i是,那么n/i也是,放到数组里面就好了。

1~n的稍微有点难,因为n本身的话时间复杂度为根号n,这样字就变成了n倍的根号N,最一般的情况下都会超时,所以要用一个新的办法:二维的动态数组。

每次找到一个i,它的倍数i*j的因子就一定有i,这时候把i放进下标为i*j的第二维数组里面就好。

其实也很简单啦~

最大公约数那个辗转相除法、辗转相加法什么的,应该都很熟悉,就是时间久了有点容易忘事!还要再去网上找一找模板在背背。

今晚上!练习打字的时候,到了第三个复习的关卡!超开心!可惜的是打着打着就烦了,就打不下去了……呜,没耐心!

但是啊!今晚的博客,可是我努力不看键盘,放好手指,尽力一个字一个字打出来的!而且我发现,果然专门去背过按键的位置是十分的不靠谱的!完全没有我不看键盘随便打来的准、来的快!

好开心!这是实实在在的进步啊!下次继续努力!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值