编程输出1000以内的所有素数,要求每行输出8个数。#include<stdio.h>#include<math.h>int prime(int);void main(){int i,m;int j=0;for(i=2;i<=997;i++){m=prime(i);if(m==1)printf("%4d",i);j++;if(j%8==0)printf("\n);}}int prime(int n){int a,k;for(a=2;a<=sqrt(n);a++){k=n%a;if(k==0)return(0);elsereturn(1);}}谢谢,运行结果不对,会出现2 ,3,5,7,9;11,13,15,17,19;21,23,……是每隔两个数输出的
3 回答
素胚勾勒不出你
TA贡献1827条经验 获得超9个赞
int prime(int n)
{int a,k;
for(a=2;a<=sqrt(n);a++)
{k=n%a;
if(k==0)
return(0);
}
return(1);
}
改成这样试试
你为什么要使用sqrt呢,为什么最多运行到他的平方根?
改成a<n试试
眼眸繁星
TA贡献1873条经验 获得超9个赞
看着总体上没什么大问题啊,报错是在哪里?
一个满8个换行的,漏掉引号了
还有一个sqrt是不是只接受double或者float的啊,加个sqrt((double)n)试试
慕田峪4524236
TA贡献1875条经验 获得超5个赞
#include <stdio.h>
#include <math.h>
int main ()
{
int i ,k=0 ,m ;
for (m=2; m<=997; m=m+1)
{
for (i=2; i<=sqrt(m);i=i+1)
if (m%i==0) break ;
if (i>sqrt(m))
{
printf("%d " ,m);
k=k+1;
if(k%8==0) printf("\n");
}
}
printf("\n");
return 0;
}
//跟你写的不一样 ,你先看看我的再找找你的错误
添加回答
举报
0/150
提交
取消