永发信息网

题目要求输出1000以内的所有质数 然后每行8个 输出 我知道F()函数错了 但是怎么改呢? 如下 感激不尽

答案:2  悬赏:40  手机版
解决时间 2021-04-12 08:19
  • 提问者网友:niaiwoma
  • 2021-04-11 09:42
#include <stdio.h>
#include <math.h>
int f(int x);
void main ()
{
int i,j=0;
for (i=1;i<=1000;i++)
if(f(i)==1)
{ j++;
printf("%d ",i);
if(j%8==0) printf("\n");}
}
int f(int x)
{ int m;
for(m=2;m<=sqrt(x);)
if(x%m==0) return 0 ;

else return 1;
if(x==2||x==3) return 1;
}
忘了,for循环后面是应该有m++,但是结果却输出的全部是奇数,不是质数。。。。。。
最佳答案
  • 五星知识达人网友:十鸦
  • 2021-04-11 10:33
仔细看了一下,撇开那个m++不谈,你的问题出在:
一进去就m=2的时候,就得到结果然后return 了,刚进循环,m=2的时候
if(x%m==0) return 0 ;
else return 1;
然后就出来了,m=3,4,5...根本没用到
*********************************
int f(int x)
{ int m;
if(x==2||x==3) return 1;
for(m=2;m<=sqrt(x);m++)
{ if(x%m==0)
return 0 ; //被整除了,就不是质数,直接返回0
else
continue; //没被整除就增加m继续看
}
return 1; //最后循环结束了还没被整除,就是质数了,返回1
}
}
全部回答
  • 1楼网友:迷人又混蛋
  • 2021-04-11 11:45
if(x%m==0) return 0 ; else return 1; 然后就出来了,m=3,4,5..int f(int x) { int m; if(x==2||x==3) return 1; for(m=2;m<=sqrt(x);m++) { if(x%m==0) return 0 ; else continue; } return 1;
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯