在趣味素数中,判定一个数是否是素数也是一个最基础的问题。请编写一个程序,找出
3-100 间所有的素数。
判定一个整数是否为素数的关键就是判定整数 n 能否被 1 和它本身之外的其它整数所
整除,若都不能整除,则 n 即为素数。我们最先想到的是根据其定义进行暴力穷举。即给定
数字 n,我们遍历一下[1,n]的整数,判断有无可以整除的因子。
但是我们发现,n 的因子是成对出现的,即 n = i * j,当我们遍历到 i 的时候,其实
是找到了一个因子对——i,j,那么这样我们遍历 j 的时候,再次访问了因子对——i,j,
这就造成了时间上的浪费。从数轴上来看,这些成对的因子是“成对”的,而这个对称点显
然是 sqrt(n)。因此,我们可以对上面判断素数的方法进行优化,遍历[1,sqrt(n)]。
输出样例
- 3
- 5
- 7
- 11
- 13
- 17
- (未完)