为什么我这样写不行,帮帮我

img


为什么无法打印出100到200之间的素数,哪里出了问题,帮忙看一下,谢谢了


#include <stdio.h>
int miao(int x)
{
    int i;
    for (i=2;i<=x;i++)
    {
        if (x%i==0)
        {
            break;
        }
        if (x==i)
        {
            return 1;
        }
    }
}
int main(){
    int a;
    for(a=100;a<=200;a++)
    {
        if(miao(a)==1)
        {
            printf("%d\n",a);
        }
    }
    return 0;
}

结果:

img

代码有些问题,需要改一下:

#include <stdio.h>
#include<stdlib.h>
int miao(int x) {
    int i = 2;
    for (i = 2; i < x;i++) {//用i去掉除1和它本身能被整除的数
            if (x % i == 0){
                  return 0;
            }
        }
    return 1;
}

int main() {
    int a=0;
    for (a= 100; a <= 200;a++) {//找出100~200之间的整数
        if (miao(a) == 1) {
           printf("素数:%d\n",a);
        }
    }
  getchar();//暂停打印窗口,可查看所有素数
  return 0;
}

#include <stdio.h>
void main() {
    int n;
    for (int i = 100; i <= 200;i++) {//找出100~200之间的整数
        for (n = 2; n <= i;n++) {//用i去掉除1和它本身能被整除的数
            if (i % n == 0) break;
        }
        if (i == n) {
            printf("素数:%d\n", i);
        }
    }
}

for 循环里面 i<=x
那必然当i==x时, x % i == 0

把i<=x
改为i*i<=x