判断一个数是否是素数,分析我写的代码,是否完整

奋斗的IT青年 2013-03-27 11:02:07
void sushu(int m)
{
if(m==1)
{
printf("%d不是素数\n", m);
return ;
}
if((m==2)||(m==3))
{
printf("%d是素数\n", m);
return;
}
for(int i=2;i*i<=m;i++)
if(m%i==0)
{
printf("%d不是素数\n", m);
return;
}
printf("%d是素数\n", m);
return ;
}
...全文
216 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
傻傻不解释 2013-03-28
  • 打赏
  • 举报
回复
感觉可以!!!
奋斗的IT青年 2013-03-27
  • 打赏
  • 举报
回复
还有等于0时,没分析。
小塔-皂荚花 2013-03-27
  • 打赏
  • 举报
回复

int sushu(int m)
{
int i;
for(i=2;i<(int)sqrt(m)+1;i++)
{
if(m%i==0)
return 0;
}
return 1;
}
我写的怎么样
赵4老师 2013-03-27
  • 打赏
  • 举报
回复
Finding prime numbers - Kenneth Haugland Different schemas for finding prime numbers explained with code http://www.codeproject.com/Article.aspx?tag=198374988322054872&
bravery36 2013-03-27
  • 打赏
  • 举报
回复
引用 4 楼 Idle_Cloud 的回复:
不过这个判定方法比较耗时,可以用 #include<stdio.h> #include<math.h> int p[8]={4,2,4,2,4,6,2,6}; int prime(int n) { int i=7,j,q; if(n==1)return 0; if(n==2||n==5||n==3)return 1; if……
没看懂ls的算法,筛法的改进版?这个步长是根据什么算法来的?当然,这类算法在判定大素数时都是无力的。
Carl_CCC 2013-03-27
  • 打赏
  • 举报
回复
不过这个判定方法比较耗时,可以用 #include<stdio.h> #include<math.h> int p[8]={4,2,4,2,4,6,2,6}; int prime(int n) { int i=7,j,q; if(n==1)return 0; if(n==2||n==5||n==3)return 1; if(n%2==0||n%3==0||n%5==0)return 0; q=(int)sqrt(n); for(;i<=q;){ for(j=0;j<8;j++){ if(n%i==0)return 0; i+=p[j]; } if(n%i==0)return 0; } return 1; } void main() { int n; scanf("%d",&n); if(prime(n))puts("Yes"); else puts("No"); }
Carl_CCC 2013-03-27
  • 打赏
  • 举报
回复
就是这样,很完整了。
ACLegend 2013-03-27
  • 打赏
  • 举报
回复
负数呢,没说不让输入负的吧

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧