睡眠质量相当高的一天(滑稽)
整一整都学了啥
1:高精度(相当水,毕竟学过)
2:模运算(?! 这还要讲?)
3:快速幂(还要谢一位学习高数时间为我们讲解的同学...不得不说真的有效,快速幂已经是随手打的了,感谢这位同学)
4:最大公约数,最小公倍数
5:埃氏筛法
我突然觉得要写一下线性筛...
代码:
#include<bits/stdc++.h> using namespace std; int pri[1000005]; int ok[5000000]; int t; int main(){ int n; cin>>n; for(int i=2;i<=n;i++){ if(!ok[i]){ t++; pri[t]=i; } for(int j=1;j<=t&&i*pri[j]<=n;j++){ ok[i*pri[j]]=1;//这前面相当简单... if(!(i%pri[j])) break;//important point(以下为"ip") } } for(int i=1;i<=t;i++) printf("%d ",pri[i]); return 0; }
我现在真的后悔发表那个"筛质数大优化"...不过也好,多一种方法...
ip:做这个操作的目的在于此--------
如果i%pri==0,说明i中含有pri作为质因数,而以下的i和pri[i]都比pri大,但其乘积一定含pri为质因数,然而我们的目的在于用最小的质因数排掉它,所以以下所有运算都将成为累赘,故舍去.等着以后遇上pri在做处理
不知道讲清楚没有...