请问c语言为什么这个素数里没有2?

  素数又称为质数。一个大于1的自然数(从2开始),除了1和它本身外,不能被其他自然数整除的叫做素数,否则称为合数。

  0和1既不是素数也不是合数,最小的素数是2。

注意:在for循环判断时不能忘记 i

关于质数分布的规律:大于等于5的质数一定和6的倍数相邻。例如5和7,11和13,17和19等等;

证明:令x≥1,将大于等于5的自然数表示如下:

可以看到,不和6的倍数相邻的数为6x+2,6x+3,6x+4,由于2(3x+1),3(2x+1),2(3x+2),所以它们一定不是素数,再除去6x本身,显然,素数要出现只可能出现在6x的相邻两侧。因此在5到sqrt(n)中每6个数只判断2个,时间复杂度O(sqrt(n)/3)。

在高配版和尊享版中,都是一个剪枝的思想,高配版中裁剪了不必要的偶数,尊享版中裁剪了不和6的倍数相邻的数,虽然都没有降低时间复杂度的阶数,但都一定程度上加快了判断的速度。

  对负数与0,1进行异常处理

到此这篇关于C语言判断一个数是否为素数方法的文章就介绍到这了,更多相关C语言判断一个数是否为素数内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

}

素数是指除1和它自身外,不能被任何数整除的数。输入一个整数n,输出2~n之间的素数个数,包括2和n。
2到n之间素数的个数。

温馨提示:答案为网友推荐,仅供参考

}

我要回帖

更多关于 c语言列出1~100所有素数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信