这个求素数的C语言哪里错啦??????

来源:百度知道 编辑:UC知道 时间:2024/06/06 16:40:08
#include "stdio.h"
#include "math.h"
int main(void)
{
int count, i, j, k, m, n;
int ri,repeat;

scanf("%d", &repeat);
for(ri = 1; ri <= repeat;ri++){
scanf("%d%d", &m, &n);
printf("primes:\n");
for(i=m;i<=n;i++){
k=sqrt(i);
for(j=2;j<=k;j++){
if(i%j==0)
break;
}
if(i>n){
printf("%6d",i);
count++;
}
if(count%6==0){

printf("\n");
}
}
}
return 0;
}
是打印m到n之间的所有素数

代码评价:比较乱!

问题:

for(i=m;i<=n;i++){
k=sqrt(i);
for(j=2;j<=k;j++){
if(i%j==0)
break;
}
if(i>n){/*这里的条件应该是j==k+1吧?*/
printf("%6d",i);
count++;
}
if(count%6==0){

printf("\n");
}

建议把判断素数写成一个函数:

int Prime(int n)
{ int i,k=(int)sqrt(n)+1;

for(i=2;i<k;i++)
if(n%i==0)break;
if((i==k))return 1;
else return 0;
}