请教如何判断一个数为素数
我才接触C,弱弱的问一句如何判断一个数为素数,希望路过的各位大哥能告诉我,多谢!
----------------解决方案--------------------------------------------------------
首先你要明白什么是素数啊
如果M能被2…sqrtM之中任何一个整数整除 那么这个数就不是素数
for(int i=2;i<sqrt(m);i++) //m为被判断的数
if(m/i)
printf("不是");
else
printf("是");
----------------解决方案--------------------------------------------------------
回复 2# 的帖子
呵呵... ----------------解决方案--------------------------------------------------------
2楼的,我提个建议,
把for(int i=2;i<sqrt(m);i++)中的sqrt(m)的值另用一变量。
可采用:
int a = sqrt(m) + 1;
for ( int i=2; i<a ; i++ )
这样可加快速度,免得每次for循环都要计算一遍sqrt(m),当然,现在你可能感觉不到它的运行速度。
此外,关于求素数,我建议参考《c语言的科学与艺术》一书,当中有一章节作了详细的讲解。我看了之后觉得很有收获。电子版我没有,你可以网上搜一下。
----------------解决方案--------------------------------------------------------
支持2#
2#说的对 ----------------解决方案--------------------------------------------------------
回复 4# 的帖子
顶,我也看过,同意 ----------------解决方案--------------------------------------------------------
2#里应该是if(x%i==0)
4#,我感觉之中,编译器通常会对for的那个中间的那个判断条件做优化。
----------------解决方案--------------------------------------------------------