为了账号安全,请及时绑定邮箱和手机立即绑定

帮忙找错,初学者,谢谢,急急急!

帮忙找错,初学者,谢谢,急急急!

收到一只叮咚 2022-11-18 17:13:50

编程输出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);
else
return(1);
}
}

谢谢,运行结果不对,会出现2 ,3,5,7,9;11,13,15,17,19;21,23,……是每隔两个数输出的

查看完整描述

3 回答

?
素胚勾勒不出你

TA贡献1543条经验 获得超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试试

查看完整回答
反对 回复 6天前
?
眼眸繁星

TA贡献1590条经验 获得超9个赞

看着总体上没什么大问题啊,报错是在哪里?
一个满8个换行的,漏掉引号了
还有一个sqrt是不是只接受double或者float的啊,加个sqrt((double)n)试试

查看完整回答
反对 回复 6天前
?
慕田峪4524236

TA贡献1594条经验 获得超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;
}
//跟你写的不一样 ,你先看看我的再找找你的错误

 


查看完整回答
反对 回复 6天前

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信