帮我看一下C语言判断素数的程序

#include"stdafx.h"#include"math.h"intmain(intargc,char*argv[]){intn,i;printf("请输入一个数"... #include "stdafx.h"
#include "math.h"
int main(int argc, char* argv[])
{
int n,i;
printf("请输入一个数");
scanf("%d",&n);
if(n==2) printf("%d是素数",n);
else
{
for(i=2;i<=sqrt(n);i++)
{
if(n%i==0)
{
printf("%d不是素数",n);
break;
}

else printf("%d是素数",n);
}
}
return 0;
}

输入3没反应,输入23,57等较大的数出错啊
展开
 我来答
百度网友89799553d
2010-11-02 · TA获得超过322个赞
知道小有建树答主
回答量:483
采纳率:0%
帮助的人:314万
展开全部
你这当然是错了 因为找到因数说明它不是素数 但找到的那个不是因数并不代表它就是素数了 所以不能对于i的每个值都输出一次。而且要特殊判断的不是2而是1。
bool prime=true;
if (n==1) prime=false;
else for (i=2;i<=int(sqrt(n));i++)
if (n%i==0) {prime=false;break;}
if (prime) printf("%d是素数",n);else printf("%d不是素数",n);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jzaleph
2010-11-02 · TA获得超过878个赞
知道小有建树答主
回答量:802
采纳率:0%
帮助的人:576万
展开全部
#include "stdafx.h"
#include "math.h"
int main()
{
int n,i;
printf("请输入一个数");
scanf("%d",&n);
if((n==2)) printf("%d是素数",n);
else
{
for(i=2;i<=sqrt(n);i++)
{
if(n%i==0)
{
printf("%d不是素数",n);
break;
}

}
if(i>=sqrt(n) printf("%d是素数",n);

}
return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友1e3176a03
2010-11-02 · TA获得超过2637个赞
知道小有建树答主
回答量:1144
采纳率:100%
帮助的人:1498万
展开全部
改成这样:

#include "stdafx.h"
#include "math.h"
int main(int argc, char* argv[])
{
int n,i;
printf("请输入一个数");
scanf("%d",&n);
if(n==2)
printf("%d是素数",n);
else
{
for(i=2;i<n;i++)
{
if(n%i==0)
{
printf("%d不是素数",n);
break;
}

}
printf("%d是素数",n);
}
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式