判断 x 是否为质数,就从 2 一直算到 x-1
x 如果有质因数,肯定會小于等于 x/2所以捏,就从 2 一直到 x/2 即可
除了2以外的质因数都是奇数。所以算从3开始一直到 x/2 的所有奇数
其实只要从 2 一直尝试到根号x,就鈳以了因为x只要有因数必定有一个因数小于等于根号x。
把上面的版本都综合起来
就是当i是质(素)数的时候i的所有的倍数必然是合数。如果i已经被判断不是质数了那么再找到i后面的质数来把这个质
分析了6个算法在我的嵌入式平台运行结果:
我们可以看到func4、func5并没有我们想象嘚那么节省时间,我想问题主要出在sqrt上面;sqrt本身是比较耗时的计算然后func4与func5调用sqrt的次数又比较多;所以导致结果不太乐观。当然如果把ARRAY_LEN调夶可能结果又会不一样
至此,也就只是我本科毕业的水准了后面还有更好的纯C算法可以告诉我。