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

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

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

收到一只叮咚 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);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试试

查看完整回答
反对 回复 2022-11-24
?
眼眸繁星

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

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

查看完整回答
反对 回复 2022-11-24
?
慕田峪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;
}
//跟你写的不一样 ,你先看看我的再找找你的错误

 


查看完整回答
反对 回复 2022-11-24
  • 3 回答
  • 0 关注
  • 95 浏览

添加回答

举报

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