我想打印100-200的素数,为什么打印出来结果是什么东西也没有呢?


#include<stdio.h>
#include<math.h>
int main()
{
    int i = 0;
    int count = 0;
    int n = 0;
    for (i = 100; i <= 200; i++)
    {
        for (n = 2; n <= sqrt(i); n++)
        {
            if ((i%n) == 0)
                break;
            else if (n == sqrt(i))
            {
                printf("%d ", i);
            }
        }
    }
    return 0;
}

你会打出一些可以开方的数吧 比如121 169什么的
算法是 每个数 看2到这个数开方数 之内的 是否存在可以整除此数的数 存在 指示变量iflag 置0表示是合数 后边不会打印
下一轮要先把iflag重新置1
如果查完了2到这个数开方之内所有数 都不能整除它 那它就是素数 iflag不会被置0 后边打印出来


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