用c语言编一个程序,判断一个数是否为素数

#include<stdio.h>
#include<math.h>
int main()
{
int i,k,m;
int n=0;
scanf("%d",m);
k=sqrt(m)+0.01;
for(i=2;i<k;i++)
{if(m%i==0)
printf("This is not a prime");
break;
if(i==k+1)

printf("This is a prime");
}

return 0;
}
我这个哪里错了

#include<stdio.h>
#include<math.h>
int main()
{
int i,k,m;
int n=0;
scanf("%d",&m);//此处m应该用 &m
k=sqrt(m)+0.01;//此处类型不匹配。不需要+0.01
for(i=2;i<k;i++) //此处错误:当K<16时,根本不会进入循环。改为i<=k
{
if(m%i==0)
printf("This is not a prime");
break;//无论是否执行整除运算,都会跳出循环。应与上一句加上大括号,并且改为continue,或者直接return;
if(i==k+1) //这一句是废话,for循环已经控制了值不能大于k。
printf("This is a prime");
}
////如果前面使用return ,可以在这里执行一句  printf("这是素数");
return 0;
}

错误的地方很多,基本上指正也就这些了。

备注:素数的算法很多很多,还可以做很多优化。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-03-26
第2个回答  2020-02-19
第3个回答  2019-08-31
其实,很简单
假如
n
的算术平方根为
r,即
n
=
r*r
如果
n
不是
素数,那么就至少有一个因子
a,即
n
=
a*b
2<
a
<r
或者
2
<
b
<
r
看能否被2到根号n之间的数整除
就是

2

r
直接的
因子